我是angularjs的新手,我正在尝试将数据从函数返回到另一个函数,并将其存储在变量中。
$scope.myNameValidate = function(name){
$scope.friendsList = $scope.getAllFriends(name);
console.log("data", $scope.friendsList);
}
$scope.getAllFriends = function(name){
friendService.getAllfriends(name)
.then(function(data){
//success
console.log(data);
}, function(err){
//error
})
}
我想将所有对象存储在变量中,但结果是未定义的。
在控制台中输出
数据未定义
[对象,对象,对象,对象,对象,对象]
答案 0 :(得分:6)
您需要了解Angular promise。
此问题与Asynchronous操作有关。
您可以使用正确的then
链接进行修复。
你可以这样做。
$scope.myNameValidate = function(name) {
$scope.getAllFriends(name)
.then(function(data) {
$scope.friendsList = data;
console.log(data);
}, function(err) {
//error
});
}
$scope.getAllFriends = function(name) {
return friendService.getAllfriends(name)
}
答案 1 :(得分:2)
为什么'未定义?
您的函数$scope.getAllFriends()
没有返回任何可以将数据设置为$ scope.friendsList的内容。
function myFunc(){
var i = 5;
}
var myVar = myFunc();
myVar will not have value 5.
function myFunc(){
var i = 5;
return i;
}
var myVar = myFunc();
在角度设置为$ scope时,即使它是异步数据也是如此 很快数据已到达angular将更新您的视图和范围。
答案 2 :(得分:1)
您不能以这种方式使用异步回调。在您的特定情况下,您应该在成功回调中设置$ scope.friendsList。
error: borrowed value does not live long enough
self.0.borrow().values.get(idx)
^~~~~~~~~~~~~~~
reference must be valid for the anonymous lifetime #1 defined on the block at 23:54...
pub fn value(&self, idx: usize) -> Option<&Value> {
^
note: ...but borrowed value is only valid for the block at 23:54
pub fn value(&self, idx: usize) -> Option<&Value> {
^
答案 3 :(得分:1)
$scope.myNameValidate = function(name){
$scope.friendsList = $scope.getAllFriends(name)
.then(function(data){
//here is your data
})
.catch(error){
//Error
}
console.log("data", $scope.friendsList);
}
$scope.getAllFriends = function(name){
var promise = friendService.getAllfriends(name)
.then(function(data){
return data;
}, function(err){
//error
})
return promise;
}
这是asynchronus调用,这就是你未定义的原因