【发布时间】:2013-09-30 05:05:28
【问题描述】:
我的问题与this post 'Using typeahead and ajax in a AngularJS app'非常相似
咖啡脚本:
$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 的回答):
现在生成的 JS 是
$scope.tradingPartners = function(searchOn) {
return $http.post("../tp/tpLookupAdmin?term=" + searchOn).then(function(response) {
return limitToFilter(response, 15);
});
};
但它仍然无法正常工作......
【问题讨论】:
标签: twitter-bootstrap angularjs coffeescript angular-ui-bootstrap