3

角度版本:AngularJS v1.3.6 http://github.com/angular-ui/ui-select:版本:0.8.3

var p1 = { 姓名:'Ramesh',电子邮件:'Ramesh@email.com',年龄:99 };

   $scope.people = [
            { name: 'Amalie',    email: 'amalie@email.com',    age: 12 },
            { name: 'Wladimir',  email: 'wladimir@email.com',  age: 30 },
            { name: 'Samantha',  email: 'samantha@email.com',  age: 31 },
            { name: 'Estefanía', email: 'estefanía@email.com', age: 16 },
            { name: 'Natasha',   email: 'natasha@email.com',   age: 54 },               
            { name: 'Adrian',    email: 'adrian@email.com',    age: 21 },
            p1
        ];

 $scope.people.selected = p1 ;

html

  <ui-select  class="full-width-select select" ng-model="people.selected" theme="select2">
                <ui-select-match  allow-clear="false">{{$select.selected.name}}</ui-select-match>
                <ui-select-choices repeat="person in people | filter:$select.search">
                    <div ng-bind-html="person.name | highlight: $select.search"></div>
                </ui-select-choices>
            </ui-select>

问题是当以编程方式选择 p1 时

p1 对象未在 ui-select 下拉列表中突出显示。

输出是:

在此处输入图像描述

http://plnkr.co/edit/3mrECwGJbz2UYcrDiCha?p=preview

在此处输入图像描述

4

1 回答 1

5

这是由于 AngularJS 1.3.1中的以下更改:

$observe: check if the attribute is undefined

ui-select 用于$observe设置默认值resetSearchInput

attrs.$observe('resetSearchInput', function() {
  var resetSearchInput = scope.$eval(attrs.resetSearchInput);
  $select.resetSearchInput = resetSearchInput !== undefined ? resetSearchInput : true;
});

但是由于上面提到的更改,因为resetSearchInput是未定义的,所以观察者函数将永远不会被执行。

要暂时解决它,请将以下属性添加到您的 ui-select 元素:

reset-search-input="'false'"

演示: http ://plnkr.co/edit/M0pXrN3n6CBjjoJXS4df?p=preview

于 2015-01-26T17:45:34.750 回答