我有一個在Angular js中使用數據庫中的值創建的多選框,其中一些預選符合特定條件。防止ng-select在焦點丟失時發射
fooSearch.html
<select multiple ng-model="foo">
<option ng-repeat="item in fooList"
value="{{item.id}}"
ng-selected="fooIsSelected(item.id)">
{{item.label}}
</option>
</select>
fooSearch-dctv.js
scope.foo = [];
scope.fooIsSelected = function(id){
var isBar = PermissionsFxty.hasPermission('A_PERM') && (id == "15" || id == "16" || id == "17");
var isBaz = PermissionsFxty.hasPermission('B_PERM') && (id == "1" || id == "3");
if((isBar || isBaz) && scope.foo.indexOf(id) == -1){scope.foo[scope.foo.length] = id;}
return isBar || isBaz;
};
的問題是,每當另一個元素焦點fooIsSelected(id)
被解僱,重新選擇可能是未選擇任何項目由用戶。無論用戶在多選框失去焦點之前選擇或取消選擇什麼選項,都會發生這種情況。它爲什麼這樣做?在scope.foo
上設置$watch
並設置標誌,有沒有辦法預防這種情況?
'選擇multiple'是通常是一個尷尬的UI設備;不是每個人都意識到可以通過查看來選擇多個項目。我會建議用複選框替換它。這就是說,[ngModelOptions](https://docs.angularjs.org/api/ng/directive/ngModelOptions)可能就是你要找的。 – Blazemonger 2014-10-20 15:15:25
經過一些更多的測試後,我更新了我的問題。每當其他元素獲得焦點時就會出現問題。不是當有問題的選擇框失去焦點時。 – 2014-10-20 16:13:46