2014-11-06 2 views
0

Я добавил в рабочей страницу этой угловой директиву от углового шпустой ссылка ошибка ui.bootstrap.typeahead

 <input type="text" ng-model="vm.test" placeholder="prima selezionare il comune" 
       typeahead="address for address in vm.updateQuartieri($viewValue)" 
       typeahead-loading="loadingLocations" class="form-control" /> 
     <i ng-show="loadingLocations" class="glyphicon glyphicon-refresh"></i> 

Я использую контроллер в качестве синтаксиса updateQuartieri возвращает массив строки и все контроллер работает нормально. Когда я начинаю набирать в текстовом поле, я получаю эту ошибку

TypeError: Cannot read property 'length' of undefined 
    at http://localhost:43638/Scripts/angular-ui/ui-bootstrap-tpls.js:3602:24 

глядя на источник

уаг getMatchesAsync = функция (InputValue) {

var locals = {$viewValue: inputValue}; 
isLoadingSetter(originalScope, true); 
$q.when(parserResult.source(originalScope, locals)).then(function(matches) { 

    //it might happen that several async queries were in progress if a user were typing fast 
    //but we are interested only in responses that correspond to the current view value 
    var onCurrentRequest = (inputValue === modelCtrl.$viewValue); 
    if (onCurrentRequest && hasFocus) { 
    if (matches.length > 0) { 

выглядит как ошибки возникают во время вызов сервера, потому что до того, как я сделаю вызов, все будет хорошо, и произойдет до того, как вызов сервера вернет данные. Я использую угловой 1.3. Любые предложения? Luca

+0

Вы нашли ответ на этот вопрос? У меня есть точная проблема. Он работал до тех пор, пока я не переместил функцию на дочерний контроллер – matsientst

ответ

0

Да, я решил, проблема заключается в том, что вызов контроллера в typeahead является асинхронным, поэтому метод, который вы собираетесь вызывать, должен вернуть обещание, а не фактические данные.

Смежные вопросы