2015-01-31 8 views
5

Oto pełna błąd pojawia się w kątowym ui-select

Error: [$interpolate:interr] Can't interpolate: {{$select.getPlaceholder()}} TypeError: Cannot read property 'length' of undefined 

My znaczników jest:

<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> 

Nic specjalnego w kontrolerze innym niż get tylu słów kluczowych z db. Oczywiście ngSanitize i ui.select są zawarte w zależnościach modułów.

Inną kwestią, którą mam, jest to, że wybory nie są widoczne. Mogę pokazać wybrane, ale lista wyborów nie jest widoczna. Używam motywu bootstrap, do którego odwołuje się select.css. Oto jak to wygląda

enter image description here

Dziękuję za pomoc.

+0

co '$ select' jest – levi

+0

https://github.com/angular-ui/ui-select/wiki/ui-select to jest wiki użytkownika ui-select. Pokazuje, w jaki sposób używany jest '$ select'. Po prostu wziąłem go stamtąd – Sincere

+1

Jaką wersję kąta i ui-wybierz używasz? – Fiver

Odpowiedz

2

Pytania z @SunilVurity i @Fiver dał mi wskazówki, które prowadzą mnie do rozwiązania problemu:

Pierwszy Zmieniłem keywords do keyword w:

<ui-select-choices repeat="keywords in keywords | filter: $select.search"> 

II w moim kontrolera I miał:

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

Który Zmieniłem do:

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

Jak widać w regulatorze, funkcja get jest asynchroniczna, która zwraca listę do niezdefiniowanej widokiem na ładunek, który spowodował błąd wspomniałem w pytaniu. Po aktualizacji kontrolera błąd zniknął. To pytanie SO pomogło AngularJS Interpolation Error.

Trzecie Wersje uiselect i angular mogą powodować problemy. Moja wersja kątowa to 1.2.9. To pokazuje, że ui-select Github issue uaktualniania wersji kątowej rozwiązuje ten problem, ja uaktualniony 1.3.11

Dzięki @SunilVurity i @Fiver

+0

Świetnie !! Dobrze wiedzieć, że mogę w czymś pomóc –

Powiązane problemy