我正在尝试运行以下功能
var getjson = function(){
$.get('/api/todos/testing', function(results){
return results;
});
}
结果应如下所示:
[{_id: "57803baf0a76d5c924b18ca2", username: "testing", toDoTask: "Buy Water", isDone: false, __v: 0},{_id: "57803baf0a76d5c924b18ca3", username: "testing", toDoTask: "Buy Milk", isDone: false, __v: 0}]
当我尝试调用函数将列表附加到我的Angular控制器
时angular.module('firstapp').controller('todos', function(){
this.list= getjson();
});
列表不保存函数返回的值。
我确定问题与我试图返回结果的方式有关,但我找不到正确的方法。
答案 0 :(得分:2)
$.get
是异步的,因此当您运行getjson()
时,代码仍将执行GET
操作,但它会立即返回。
由于您没有为其定义return
语句,因此默认情况下,javascript会返回undefined
,this.list
将被设置为。{/ p>
$.get
的文档:
https://api.jquery.com/jquery.get/
要解决您的问题,最简单的方法是让getjson()
接受回调函数。
示例:强>
var getjson = function(done){
$.get('/api/todos/testing', function(results){
return done(results);
});
}
然后,您将使用设置getjson()
。
list
angular.module('firstapp').controller('todos', function(){
getjson(function(results) { this.list = results; }));
});