ui-select error“无法插值:{{$ select.getPlaceholder()}}”

时间:2015-01-31 15:37:51

标签: angularjs ui-select

这是我在角度ui-select

中得到的完整错误
Error: [$interpolate:interr] Can't interpolate: {{$select.getPlaceholder()}} TypeError: Cannot read property 'length' of undefined

我的标记是:

  <ui-select multiple ng-model="case.keywords" theme="bootstrap">
    <ui-select-match placeholder="Select keywords...">{{$item.name}}</ui-select-match>
    <ui-select-choices repeat="keywords in keywords | filter: $select.search">
      <div ng-bind-html="keyword.name | highlight: $select.search"></div>
    </ui-select-choices>
  </ui-select>
<p>Selected: {{case.keywords}}</p>

get来自db的关键字数组之外,控制器没有什么特别之处。显然,ngSanitizeui.select包含在模块依赖项中。

我遇到的另一个问题是选择不可见。我能够显示所选的,但选项列表不可见。我使用的是bootstrap主题,引用了select.css。这就是它的样子

enter image description here

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

来自@SunilVurity和@Fiver的问题给了我提示,让我解决了这个问题:

首先我将keywords更改为keyword

<ui-select-choices repeat="keywords in keywords | filter: $select.search">
我的控制器中有

第二

appFactory.getKeywords().then(function (keywords){
  $scope.keywords = keywords;
  $scope.case = {};
  $scope.case.selectedKeywords = [];
});

我改为:

$scope.case = {};
$scope.keywords = [];
learningCasesFactory.getKeywords().then(function (keywords){
  $scope.keywords = keywords;
  $scope.case.selectedKeywords = [];
});

正如您在控制器中看到的那样,get函数是异步的,它会在加载时将未定义的列表返回给导致我在问题中提到的错误。更新控制器后,错误消失。这个问题帮助AngularJS Interpolation Error

第三次 uiselectangular版本可能会导致问题。我的角度版本是1.2.9。这个ui-select Github issue表明升级角度版本可以解决问题,我将其升级到1.3.11

感谢@SunilVurity和@Fiver