0
我有一個動態html塊,用戶可以爲其添加多個選擇列表。我想通過使用自定義過濾器來禁用用戶在之前的列表中做出的選擇。如何將動態模型傳遞給過濾器並檢查該值是否存在於已經生成的選擇列表中,這一部分我正在努力工作。我已創建plunker。我很感激幫助。角度過濾器選擇列表不包括選定的值
<body ng-app="app" ng-init="things=[{id:0,name:'thing1'},{id:1,name:'thing2'},{id:2,name:'thing3'},{id:3,name:'thing4'}]">
<select ng-model="fields.option1" ng-options="thing.name for thing in things | excludeFrom:fields.option2"></select>
<select ng-model="fields.option2" ng-options="thing.name for thing in things | excludeFrom:fields.option1"></select>
<select ng-model="fields.option2" ng-options="thing.name for thing in things | excludeFrom:fields.option1,fields.option2"></select>
angular.module('app',[])
.filter('excludeFrom', [function() {
return function (things, selectedValue) {
if (!angular.isUndefined(things) && !angular.isUndefined(selectedValue)) { //&& selectedValue.length > 0) {
var tempThings = [];
angular.forEach(selectedValue, function (name) {
angular.forEach(things, function (things) {
if (angular.equals(things, selectedValue.name)) {
tempThings.push(things);
}
});
});
return tempThings;
} else {
return things;
}
};
}]);
嗨@Bricktop,我試圖通過動態模型。這不可能嗎? – Jimi 2015-02-08 07:57:50
Hi @Jimi,我不確定你的意思是什麼動態模型;我猜想有一個動態長度的模型?這應該是可能的,但可能難以實現。我會盡力找到解決方案,但可能需要一些時間。 – Bricktop 2015-02-08 09:51:38
如果我明確地將ng-model =「select1」中的值傳遞給過濾器,它將起作用。如果我嘗試傳遞整個模型,並有多個值,我會得到解析錯誤。當然,這可以作爲一個對象傳遞? – Jimi 2015-02-08 10:00:11