1

我的问题基于此处提出的类似问题: Select2 for AngularJS 中的两种方式数据绑定不起作用

这个问题得到了回答,并提供了一个工作 plunker:http ://plnkr.co/edit/MKy2IU?p=preview

主要代码是一个选择框:

<select ui-select2="{width: 'element'}" style="width: 200px" placeholder="All" ng-model="chosenItem">
        <option value=""></option>
        <option ng-repeat="item in filterItems" value="{{item.id}}">{{item.text}}</option>
      </select>

以及更新选择控件的功能。这在 plunker 中效果很好。

我分叉了 plunker,只将角度版本从:1.0.7 更改为:1.2.13(我正在使用)

这是使用 Angular 1.2.13 的分叉 plunker http://plnkr.co/edit/bcowo3bHKC2XvWDrv6V2?p=preview,您可以在 plunker 中看到模型已更新但视图不受影响,此外,当您打开选择框,您会看到该值已选中但未选中。

知道如何使它工作吗?

4

1 回答 1

3

我没有使用过 select2 插件,但看起来你的角度更新,你的 select2 指令的优先级需要高于ng-model'priority which is 0,所以我只是1为指令提供了一个优先级,它现在可以工作了。

在 ui-select2 更改中:-

angular.module('ui.directives').directive('uiSelect2', ['ui.config', '$timeout', function (uiConfig, $timeout) {
  var options = {};
  if (uiConfig.select2) {
    angular.extend(options, uiConfig.select2);
  }
  return {
    require: '?ngModel',
    priority: 1,  //<--- Here

演示

如果你真的不想接触插件源(我会建议以后的任何升级),在你的应用程序中只需将优先级设置为配置,并在你获得该指令的工作版本后将其删除。还要验证他们是否有已修复的更新版本。

   //Remove later once plugin is fixed
   app.config(function($provide){
      return $provide.decorator('uiSelect2Directive', ['$delegate', function($delegate) {
        $delegate[0].priority = 1; //Just set the priority
        return $delegate;
    }])});

演示

于 2014-09-05T21:32:22.490 回答