如何以编程角度更改多选的值

时间:2016-09-19 06:07:01

标签: angularjs multi-select

我有一个多选:

<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对象但没有显示。此外,在第一次选择用户之后,它将被删除。

2 个答案:

答案 0 :(得分:0)

观看数组时,您应该使用

scope.$watchCollection(attrs.ngModel, function(newValue) { /*...*/ });

而不仅仅是$ watch,以便在项目被推入数组时更新视图。

答案 1 :(得分:-1)

使用ng-options时,模型将具有完整对象的数组。如果您尝试仅在模型数组中放置值,则它将无法工作。尝试遍历列表ctrl.statuses并推送您想要预先选择的search.lastStatuses中的完整对象。

希望有所帮助。快乐的节目!