我的问题与这篇文章“在 AngularJS 应用程序中使用 typeahead 和 ajax”非常相似
咖啡脚本:
$scope.tradingPartners = (searchOn) ->
console.log("Searching on #{searchOn}")
$.getJSON("../tp/tpLookupAdmin", {term: searchOn, max: 20}, (response)->
response)
生成 Javascript:
$scope.tradingPartners = function(searchOn) {
console.log("Searching on " + searchOn);
return $.getJSON("../tp/tpLookupAdmin", {
term: searchOn,
max: 20
}, function(response) {
return response;
});
};
使用它:
<input type="text" ng-model="testScript.sender" typeahead="sender as sender.label for sender in tradingPartners($viewValue)"
那么怎么了?...
getJSON 调用做得很好,结果看起来不错,但 typeahead 没有做任何事情。如果我将硬编码值作为函数的返回值,它就可以正常工作。
现在我知道 getJSON 不只是返回一个对象数组,而且在做
$.getJSON("../tp/tpLookupAdmin", {term: searchOn, max: 20}, (response)->
response).responseJSON
给出未定义的。
有效的硬编码 json 示例:
[{"id":"1","label":"test1"},{"id":"2","label":"test2"}]
我在这里遗漏了一些简单的东西......
编辑(来自 kju 答案):
现在gen'd JS是
$scope.tradingPartners = function(searchOn) {
return $http.post("../tp/tpLookupAdmin?term=" + searchOn).then(function(response) {
return limitToFilter(response, 15);
});
};
但它仍然无法正常工作......