三國紛爭
2019-03-05 13:15:39
根據(jù)上面的圖,大概邏輯就是開始除第一個select選項可以選擇之外,其他所有的元素都是disable狀態(tài)不可點擊當(dāng)選擇不喝的時候,其余元素依舊不可點擊,選擇喝之后解鎖一些元素比如可以輸入每天喝多少酒當(dāng)我在是否已戒酒的選項中選擇已戒的時候,何時起開始戒酒的Input隨之解鎖點擊其他的時候最后一個Input解鎖白天功能是很順利的完成了,但是我覺得我的做法不是很好,我把所有的依賴關(guān)系當(dāng)參數(shù)傳入了函數(shù)[ {el:'是否喝酒的select',keywords:'不喝',nodelist:['每天喝多少酒','喜歡喝什么酒的radio']},{el:'是已戒酒的select',keywords:'已戒',nodelist:['何時起開始戒酒的Input']}]我想問下有什么更高效的方法?
2 回答

胡說叔叔
TA貢獻1804條經(jīng)驗 獲得超8個贊
我覺得可以用觀察者模式(也可理解為訂閱者)來做,因為從需求上來看,是觸發(fā)一個事件,會導(dǎo)致多個關(guān)聯(lián)實體的狀態(tài)變化。
var pubSub = new PubSub();
$喝酒select.addEventListener('change', function() {
if (喝酒) {
pubSub.emit('喝酒');
} else if (不喝){
pubSub.emit('不喝');
}
})
pubSub.on('喝酒', function() {
$喝多少.disabled = false;
$喜歡喝什么.disabled = false;
})
pubSub.on('不喝', function() {
$喝多少.disabled = true;
$喜歡喝什么.disabled = true;
})
其他差不多的邏輯,不過感覺也不是很好的辦法,
還有一個,如果你用vue這種框架的話,其實可以定義數(shù)據(jù)狀態(tài),然后不同的組件 根據(jù)狀態(tài)來渲染其實也是很方便的。
添加回答
舉報
0/150
提交
取消