Я пытаюсь реализовать функциональность typeahead в своем макете, где содержимое таблицы обновляется по мере изменения значения typeahead, но оно выдает сообщение об ошибке ,Ошибка Angularjs: [filter: notarray] Ожидаемый массив, но полученный: {} в typeahead
Angularjs Error: [filter:notarray] Expected array but received: {}
vm.getEnterprises = function(term){
vm.selected = undefined;
return $http.get(path +'/enterprise/'+ term + '/search')
.then(function(response){
vm.customEnterprises = response.data;
vm.showcontent = true;
vm.defaultcontent = false;
return response.data;
console.log(response);
});
}
Я использую MongoDB с Mongoose ОРМ в Node для внутреннего интерфейса, код API является,
var mongoose = require('mongoose');
var enterprise = mongoose.model('enterprise');
var search = function(req, res){
var name = req.params.name;
var regexValue = '\.*' + name ;
\t \t enterprise.find({'name': new RegExp(regexValue, 'i')},function(err, data){
\t \t \t if (err){
\t \t \t \t console.log('err',err);
\t \t \t } else {
\t \t \t \t return res.json(data);
\t \t \t \t console.log(data);
\t \t \t }
\t \t });
}
module.exports = {
\t searchEnterprise : search
};
Мой Угловой код пользовательского интерфейс,
input type="text" id="search" ng-model = "vm.selected" class="form-control input-md enable collapse" placeholder="search for an enterprise" uib-typeahead = "name as enterprise.name for enterprise in vm.getEnterprises($viewValue)| filter:$viewValue | limitTo : 3 ">
vm.getEnterprises ($ viewValue) вызывает функцию, которая делает вызов API в задней части, если я изменить его $ scope.retdata где делать, что вызов будет сделано. – Idlliofrio
То, что я имел в виду, находится внутри вашего 'vm.getEnterprises' вместо' return response.data', присваивает данные ответа переменной уровня видимости и гарантирует, что ваш шаблон может получить к ней доступ, а затем измените 'in vm.getEnterprises ($ viewValue)' к этой переменной –
Btw, на всякий случай, я думаю, вам не нужно 'return' для' $ http.get'. Таким образом, ваша функция 'vm.getEnterprises' в основном не возвращает ничего, кроме API вызовов, чтобы извлекать данные, а затем хранить данные для этой переменной уровня видимости. Затем 'uib-typehead' должен обнаруживать изменения этой переменной уровня видимости после устранения обещания. –