我正在使用带有异步调用的ui.bootstrap typeahead。但是,结果数据似乎没有找到回到typeahead指令的方法,随后没有数据显示下拉列表。
html是
<input type="text" ng-model="asyncSelected" placeholder="Search Profile" typeahead="username.username for username in getSearch($viewValue)" typeahead-wait-ms="400" class="form-control">
JS功能就在这里
$scope.getSearch = function (val) {
return $sails.get("/search/" + val).success(function (response) {
console.log(response);
return response.map(function (item) {
console.log(item.username);
return item.username;
});
}).error(function (response) {
console.log('The sails profile search has failed');
});
}
响应JSON对象是
Object
@type: "d"
id: "#17:3"
username: "Burt"
__proto__: Object
我在客户端上使用angular-sails来查询后端。我已经使用ui.bootstrap文档中给出的示例测试了代码,一切正常。
$ sails.get也可以作为console.log(item.username)打印出值。
我觉得它与getSearch函数中的promise有关。
为什么下拉列表没有出现的任何想法?
答案 0 :(得分:0)
我将风帆从10.5更新到11.随后客户端SDK发生了变化(Sails.io),我使用Angular-Sails的角度库也需要更新。
承诺功能已更改,我需要更新它。将promise函数更改为下面的函数可以解决问题。现在,typeahead函数获得响应并显示下拉列表。
return $sails.get("/search/" + val)
.then(function (response) {
console.log(response);
return response.data.map(function (item) {
return item.username;
});
}, function (response) {
alert('Houston, we got a problem!');
});