Упреждающий массив объектов?

У меня возникли проблемы с пониманием директивы AngularUI Bootstrap Typeahead. В своем примере массива объектовstateWithFlags они не обязательно объясняют, что говорит выражение директивы.

state as state.name for state in statesWithFlags | filter:{name:$viewValue}

Ссылка: http://angular-ui.github.io/bootstrap/#/typeahead

Они используют состояние дважды, может кто-нибудь объяснить мне это? А также объяснить, что именно говорит фильтр?

Например, когда я пытаюсь создать объект с массивом объектов и просматриваю эти данные с помощью Typeahead, я не могу получить доступ к каким-либо данным.

JSON

$scope.dataExample = {
  'students' : [
    {
      'id': 1,
      'name': 'John Doe'
    },
    {
      'id': 2,
      'name': 'Jane Doe'
    }
  ]
};

HTML

<input type="text" ng-model="selectedStudent" typeahead="student as students.name for student in dataExample | filter:{name:$viewValue}">

person Aaron Brewer    schedule 21.01.2015    source источник


Ответы (1)


Синтаксис этого опережающего выражения аналогичен ngOptions в ngSelect (дополнительная информация в этом блоге: http://www.undefinednull.com/2014/08/11/a-brief-walk-through-of-the-ng-options-in-angularjs/).

По сути, это понимание списка. Вы предоставляете список, который typeahead будет использовать для заполнения параметров, объект для установки значения модели при выборе и способ отображения параметра со следующим синтаксисом:

modelValue as display for iterationItem in list

Ваша проблема в том, что часть «in dataExample» хочет массив, но вы даете ему объект (вы можете дать ему объект, но это не то, что вы пытаетесь сделать). Вы хотите:

<input type="text" ng-model="selectedStudent" typeahead="student as student.name for student in dataExample.students | filter:{name:$viewValue}">

Что касается вашего другого вопроса, фильтр просто фильтрует, какие параметры должны отображаться. $viewValue — это тип свойства, который заранее устанавливает все, что ввел пользователь, фильтр выберет только те параметры, которые соответствуют этой подстроке.

person David Williams    schedule 21.01.2015