2015-02-12 3 views
0

Я получаю ошибку, когда пытаюсь использовать bs-typeahead для объекта. Сообщение об ошибке получает отображаться, когда я начинаю печатать в текстовом полеangularstrap typeahead using object

Ниже HTML:

<input type="text" class="form-control input-lg" id="city" name="city" ng-model="data.cityState" placeholder="City" ng-options="subscribedTown.id as subscribedTown.label for (index, subscribedTown) in data.subscribedTowns" bs-typeahead> 

Ниже в ЯШ:

var oostApp = angular.module('oostApp', ['mgcrea.ngStrap']); 

oostApp.controller('SearchController', ['$scope', function ($scope) { 
    $scope.data = {}; 

    $scope.data.cityState = ''; 

    $scope.data.subscribedTowns = { 

    '54bd7820104d630153f62a06': { 
     id: "54bd7820104d630153f62a06", label: "Bloomfield, CT", name: "Bloomfield", state: "CT" 
    }, 

    '54bd7829104d630153f66082': { 
     id: "54bd7829104d630153f66082", label: "Manchester, CT", name: "Manchester", state: "CT" 
    } 

    }; 

}]); 

Ниже приводится plunker: http://embed.plnkr.co/XFMMUfTLmmvNXn2quO0Y

Ошибка, которую я получаю в Google хром:

TypeError: undefined is not a function 
    at i (typeahead.js:259) 
    at typeahead.js:259 
    at l.promise.then.F (angular.js:11573) 
    at l.promise.then.F (angular.js:11573) 
    at angular.js:11659 
    at k.$get.k.$eval (angular.js:12702) 
    at k.$get.k.$digest (angular.js:12514) 
    at k.$get.k.$apply (angular.js:12806) 
    at angular.js:1447 
    at Object.d [as invoke] (angular.js:3966) 

ответ

-1

Я не знаю, почему вы используете объекты внутри объекта и даете ему идентификатор объекта в качестве ключа, в то время как объект имеет то же значение id в нем. Я думаю, что лучше использовать массив, и это может также создать эту ошибку, которую вы получаете. Значение id включено в каждый объект, поэтому нет необходимости дублировать его как ключ для всего объекта. Легче и быстрее выполнять итерацию по массиву, а онлайн-примеры на AngularStrap также используют массив. https://mgcrea.github.io/angular-strap/#/typeaheads#typeaheads

Таким образом, вы можете напрямую войти в объект и получить все значения, необходимые для работы с typeahead от AngularStrap.

Вот возможное решение: http://plnkr.co/edit/5AewKg?p=preview

undefined function я получаю сейчас от Plunker. Я не получаю это каждый раз, и он никогда не бывает, когда я проверяю код локальным. Дайте мне знать, если это сработает для вас. Ввод B вызовет обе возможности.

Еще одно небольшое замечание:

angular.module('appName', []); // This is the angular module setter 
angular.module('appName'); // This is the angular getter 

Источник: github.com/johnpapa/angularjs-styleguide#modules

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