我一直试图让AngularJS ui打字机与我的后端一起工作,但没有成功。
在我的部分:
<input type="text" ng-model="selected" typeahead="language.id as language.name for language in getLanguages($viewValue) | filter:$viewValue"/>
在我的控制器中:
$scope.getLanguages = function(search) {
// This works:
return [{"id":"15","name":"Norwegian (Bokm\u00e5l)","short":"no"},{"id":"45","name":"Norwegian (Nynorsk)","short":"nn"}];
// This doesn't work:
return $http.get('/json/suggest/languages/' + search).success(function(response) {
return response;
});
}
正如你所看到的那样,当我在JS中静态定义响应时,它不起作用,而不是从后端检索它时。静态响应是从后端响应中复制粘贴的。 Http请求正常,我可以在开发人员工具中看到响应,格式正确但是没有出现typehead。知道为什么会这样吗?
顺便说一下,我用这个Plunker作为例子:http://plnkr.co/edit/eGG9Kj?p=preview
谢谢!
答案 0 :(得分:2)
您期望$http.get
同步返回值。 AFAIK不是它的工作原理。这就是我要做的事情:
$scope.languages = [];
$scope.getLanguages = function(search) {
$http.get('/json/suggest/languages/' + search).success(function(response) {
$scope.languages = response;
}
}
然后你需要将typeahead绑定到$scope.languages
并找出如何在键入时调用getLanguages
- 可能需要某种指令。
答案 1 :(得分:1)
您的代码中存在两个问题:
success
,而是将其更改为then
; response
。更改您的代码:
return $http.get('/json/suggest/languages/' + search).then(function(response) {
return response.data;
});