0

我一直在尝试使 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 请求正常,我可以在开发者工具中看到响应,格式正确但没有出现字头。知道为什么会这样吗?

顺便说一句,我以这个 Plunker 为例:http ://plnkr.co/edit/eGG9Kj?p=preview

谢谢!

4

2 回答 2

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您键入时调用 - 可能需要某种指令。

于 2013-08-07T20:25:52.530 回答
1

您的代码中有两个问题:

  • 您正在使用successwhich 不返回承诺,请将其更改为then
  • 进行上述更改后,您只需要返回数据而不是整个response.

像这样更改您的代码:

return $http.get('/json/suggest/languages/' + search).then(function(response) {
    return response.data;
});
于 2013-08-07T21:23:23.023 回答