我有一个名为getMail()的函数
$scope.getMail=function(){
$http.get(APISource).
success(function(data) {
$scope.mail =data;
}).
error(function(data) {
console.log("error");
console.log(data);
});
}
在这个函数的成功中,我将保存返回数据在$ scope.mail中; 而且我还有另一个功能
function1()在同一个控制器中但$ scope.mail不可访问。
请帮忙。
答案 0 :(得分:2)
$http.get
是异步执行的。这意味着$scope.mail
的设置发生在一个单独的线程中,并且在调用$ http.get之后很可能在同一个线程中不可用。
一种可能的解决方案是将$scope.mail
的所有内容移动到success()
回调的正文中:
...
success(function(data) {
$scope.mail =data;
function1();
})
...
答案 1 :(得分:0)
这是一个小提琴,需要一些自由来获取一些东西并运行抓取假数据(来自jsFiddle的api):http://jsfiddle.net/jetweedy/8vxvfcf7/
var app = angular.module('app', []);
app.controller('PhoneListCtrl', function ($scope, $http) {
$scope.getMail = function () {
$http.get("/echo/json/").
success(function (data) {
$scope.mail = data;
console.log("success", $scope.mail);
$scope.function1();
}).
error(function (data) {
console.log("error", data);
});
}
$scope.function1 = function() {
console.log("function1", $scope.mail);
}
$scope.getMail();
});