Итак, я использую Typeahead для извлечения некоторой информации из файла json. Заработало, без проблем. Но я хотел бы «автозаполнить» несколько других полей ввода, когда я выбрал объект в первом.
Допустим, первое поле выглядит так:
<input type="text" class="form-control" id="supertag" ng-model="selected" uib-typeahead="title.title for title in tags | filter:$viewValue | limitTo:8"/>
Он отображает title.title в этом поле ввода, отлично! Я пытался решить эту дилемму несколькими способами, но не могу заполнить остальные поля ввода, когда первое выбрано и готово. Я хотел бы иметь что-то вроде title.subtitle на следующем, но это не кажется таким уж прямым.
Что мне не хватает? Это не работает, например:
<input type="text" class="form-control" id="rubrik" value="{{title.subtitle}}"/>
Спасибо!
Изменить: json выглядит примерно так:
{
title: 'title',
subtitle: 'subtitle',
id: 'id'
},
{
title: 'title',
subtitle: 'subtitle',
id: 'id'
},
Изменить: дополнительный код для сравнения разных файлов json.
Вот на что указывает поле ввода:
$http.get(tagUrl)
.then(function(res) {
$scope.tags = res.data;
})
И при выборе:
$scope.onSelect = function($item, $model, $label) {
$scope.id = $item.id;
$scope.title = $item.title;
$scope.selected = $item.selected;
$scope.subtitle = $item.subtitle; <- undefined because it only exists in JSON2, not in JSON1.
console.log($scope.id);
};
Вот где я хотел бы, чтобы функция выполняла сравнение входных идентификаторов. Он всегда будет существовать в JSON1 (tagUrl), но я также хочу, чтобы он смотрел, существует ли он в JSON2 (superUrl), прежде чем идти дальше (а также, если он существует, установите $scope.subtitle = $item.subtitle в соответствующее поле ввода) . Я пробовал разные подходы с операторами if, но в лучшем случае я получаю неопределенность.
У меня есть это для ng-repeat, в котором перечислены все superUrls на странице, которые могут быть полезны для получения того, что я хочу.
$http.get(listSuperUrl)
.then(function(res) {
$scope.current = res.data;
})