Угловая лента с использованием объекта

Я получаю сообщение об ошибке при попытке использовать 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

Другие вопросы по тегам