angularjs - Angular Bootstrap 多选择器组件在模型更改后不在选项上显示刻度线

标签 angularjs bootstrap-multiselect

我正在使用 Angular Bootstrap Selectpicker .

我使用的是 Angular 版本 1.4.7。 对于选择器,他们提供指令,

angular.module('angular-bootstrap-select', [])
.directive('selectpicker', ['$parse', function ($parse) {
return {
  restrict: 'A',
  require: '?ngModel',
  priority: 10,
  compile: function (tElement, tAttrs, transclude) {
    tElement.selectpicker($parse(tAttrs.selectpicker)());
    tElement.selectpicker('refresh');
    return function (scope, element, attrs, ngModel) {
      if (!ngModel) return;

      scope.$watch(attrs.ngModel, function (newVal, oldVal) {
        scope.$evalAsync(function () {
          if (!attrs.ngOptions || /track by/.test(attrs.ngOptions)) element.val(newVal);
          element.selectpicker('refresh');
        });
      });

      ngModel.$render = function () {
        scope.$evalAsync(function () {
          element.selectpicker('refresh');
        });
      }
    };
  }

};
}]);

选择器看起来像

<select class="form-control" data-style="btn-default"
            data-live-search="true" selectpicker multiple
            data-selected-text-format="count>2"
            data-collection-name="users"
            ng-model="selectedUsers"
            ng-options="user.name for user in users">
    </select>

在上述情况下,selectedUser 将具有刻度线,如果我从 Controller 更改 selectedUsers 的值。它不显示更新的 selectedUsers 选项的刻度线。

当我选择多个选项时,它会显示所选选项的刻度线。 然后,如果我刷新 View ,虽然 ng-model 仍然有以前的值,但它不显示 ng-model 中值的刻度线

Plunker

最佳答案

我简化了你的代码来工作。检查这个Demo

.directive('selectpicker', ['$parse', selectpickerDirective]);

function selectpickerDirective($parse) {
  return {
    restrict: 'A',
    priority: 1000,
    link: function (scope, element, attrs) {

        //New change
        scope.$watch(attrs.ngModel, function(n, o){
          element.selectpicker('val', $parse(n)());
          element.selectpicker('refresh');
        });

    }
  };
}

关于angularjs - Angular Bootstrap 多选择器组件在模型更改后不在选项上显示刻度线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32985531/

相关文章:

javascript - AngularJS $scope 原型(prototype)继承 - 原始与对象?

javascript - 用于检查基于值 JS 的多选参数的文本框值

jquery - 如何使 IE 9 与 davidstutz 的 Bootstrap Multiselect 插件一起使用?

css - bootstrap 多选下拉宽度 100%

asp.net-core - ASP.Net Core Razor 页面中的 Bootstrap Multiselect 在单击时不显示下拉列表

Docker 中的 AngularJS 和 NodeJS 应用程序

angularjs - 在 'Argument of type '类型中,如何解决}' is not assignable to parameter of type ' {]'. [ng] Property ' any [ '{}' length'丢失了。

javascript - ui-gmap-window 不起作用,但 ui-gmap-windows 起作用

javascript - Angular JS : get ng-model on ng-change

javascript - 如何更改下拉列表的默认文本?