Угловая лента с использованием объекта
Я получаю сообщение об ошибке при попытке использовать bs-typeahead для объекта. Сообщение об ошибке отображается, когда я начинаю вводить текстовое поле
Ниже приведен 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>
Ниже js:
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"
}
};
}]);
Ниже находится поршень: http://embed.plnkr.co/XFMMUfTLmmvNXn2quO0Y
Я получаю ошибку в Google Chrome:
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 включено в каждый объект, поэтому нет необходимости дублировать его как ключ для всего объекта. Проще и быстрее перебирать массив, а онлайн-примеры на AngularStrap также используют массив. Источник: https://mgcrea.github.io/angular-strap/
Таким образом, вы можете перейти непосредственно к объекту и получить все значения, необходимые для работы с typeahead из AngularStrap.
Вот возможное решение: http://plnkr.co/edit/5AewKg?p=preview
undefined function
Я получаю сейчас от Плункер. Я не получаю это каждый раз, и это никогда не происходит, когда я тестирую локальный код. Дайте мне знать, если это работает для вас. Нажатие B активирует обе возможности.
Еще одна небольшая заметка:
angular.module('appName', []); // This is the angular module setter
angular.module('appName'); // This is the angular getter
Источник: github.com/johnpapa/angularjs-styleguide#modules