我有一个多选:
<select id="statuses-multi" ng-multiselect multiple="" ng-model="search.lastStatuses"
ng-options="status for status in ctrl.statuses track by status">
</select>
指令ng-multiselect:
app.directive('ngMultiselect', function () {
return {
restrict: 'A',
require: 'ngModel',
scope: false,
link: function(scope, element, attrs, ctrl) {
scope.$watch(attrs.ngModel, function(newValue) {
scope.$evalAsync(function() {
$(element).dropdown();
});
});
}
}
});
只要用户手动选择所有内容,一切正常。但是,我需要预先选择一些值
我试图使用简单的search.lastStatuses.push(some_value)
- 不起作用。
它只显示它有some_value对象但没有显示。此外,在第一次选择用户之后,它将被删除。
答案 0 :(得分:0)
观看数组时,您应该使用
scope.$watchCollection(attrs.ngModel, function(newValue) { /*...*/ });
而不仅仅是$ watch,以便在项目被推入数组时更新视图。
答案 1 :(得分:-1)
使用ng-options时,模型将具有完整对象的数组。如果您尝试仅在模型数组中放置值,则它将无法工作。尝试遍历列表ctrl.statuses并推送您想要预先选择的search.lastStatuses中的完整对象。
希望有所帮助。快乐的节目!