讓說,我有以下幾點:顯示/隱藏SELECT選項?
<select class="form-control" name="blah" ng-model="$ctrl.form.blah" ng-options="item.id as item.name group by item.etype | uppercase for item in $ctrl.opts"></select>
現在我想的是隱藏/點擊一組按鈕,即顯示每一組我有按鈕,每一個組,當我切換點擊它,我想指定的組選項在選擇框中隱藏/顯示。
任何方式來做到這一點?
我做到了與過濾器Yatrix解釋,再加上我通過組件作爲參數的控制器上。通過這種方式,我可以訪問觸發變量,決定要過濾的內容。
我現在唯一的問題是,我用:
ctrl.form.select_box = ctrl.opts[0].id
我再也不能用它來設置默認選項!任何方式來解決這個問題。
這是我結束了:
<select class="form-control" name="blah" ng-model="$ctrl.form.blah" ng-options="item.id as item.name group by item.etype | uppercase for item in $ctrl.opts | blah:$ctrl"></select>
angular.module('myapp').filter('blah', function() {
return function(items, ctrl) {
rv = [];
angular.forEach(items, function(item) {
if (ctrl.blah_f1 && item.etype == 'type1') rv.push(item);
if (ctrl.blah_f2 && item.etype == 'type2') rv.push(item);
});
return rv;
};
});
我知道這是不是直接訪問CTRL個好主意,但看不到乾淨影響過濾器的任何其他方式。 這些標誌由兩個按鈕觸發,這兩個按鈕的作用類似於無線電&複選框,即至少必須打開一個按鈕,但兩者都可以打開。 通過這種方式,用戶可以決定哪些「類型」的項目在選擇框中。
不要將控制器作爲參數傳遞給過濾器。保持你的關注獨立。一個過濾器應該包含一個項目列表並對其進行過濾,然後再做其他事情。它不應該要求掌握控制器的知識。 – Yatrix
你可以在小提琴中發佈你的代碼嗎?看到你在做什麼會更容易。你在這裏沒有發佈太多的代碼。 – Yatrix