Javascript 从AngularJS$http get返回对象
我使用下面的代码获取json对象并将其绑定到$scope 工作代码:Javascript 从AngularJS$http get返回对象,javascript,ajax,angularjs,Javascript,Ajax,Angularjs,我使用下面的代码获取json对象并将其绑定到$scope 工作代码: $http({ url: '/Home/GetJson', method: "GET", params: { clientID: cId } }).success(function (data) { $scope.members = data.members; }) 它起作用了。。我想做的是将结果放入var数据中,然后将其添加到$scope中 失败代码: var dat
$http({
url: '/Home/GetJson',
method: "GET",
params: {
clientID: cId
}
}).success(function (data) {
$scope.members = data.members;
})
它起作用了。。我想做的是将结果放入var数据中
,然后将其添加到$scope中
失败代码:
var data = $http({
url: '/Home/GetJson',
method: "GET",
params: {
clientID: cId
}
}).success(function (data) {
return data.members;
})
$scope.members = data;
当我查看$scope.members时,它在失败的代码中是空的,因为$scope.members在填充时是空的(js是基于事件的)
我怎么能等到json返回>然后var=data>然后$scope.members=data
工作代码
我使用了Javascript回调函数,如下所示
调用我的主函数
DoLogin($scope, $http, email, password, AssingMemberToScope);
function DoLogin($scope, $http, email, password, callback) {
$http({
url: '/Home/GetJson',
method: "GET",
params: {
clientID: cId
}
}).success(function (data) {
callback($scope, data); //<----- Call Back occurs
})
}
我认为更好的方法是将JSON调用放入接受
回调
函数作为参数的函数中。快速示例:
function makeJSONCall(callback) {
$http({
url: '/Home/GetJson',
method: "GET",
params: { clientID: cId }
}).success(function (data) {
callback(data);
});
}
function someFunctionCallback(param) {
console.log(param)
}
现在,在
回调
函数中,对数据执行您想要的操作。您也可以在需要时调用JSON函数,一个简单的makeJSONCall(someFunctionCallback)
就可以了。您在最后一句话中已经解释过了,您可以使用Promissions和它们的then()回调
尝试以下模式:
angular.module('App').factory('service', function ($http) {
var service = {
myFunction: function (query) {
var promise = $http({
url: '/Home/GetJson',
method: "GET",
params: {
clientID: cId
}
}).success(function (data) {
return data.members;
});
return promise;
};
}
});
然后在使用服务时,请执行以下操作:
service.myFunction(query).then(function (data) {
$scope.members = data.members;
});
在第一个示例中,通过在回调中分配它,您做得很正确,为什么要更改它呢?我想将整个json调用放在一个单独的函数中,并将数据返回到函数中,这样我就可以对它做一些事情了。我喜欢这个答案。承诺很酷,但会增加复杂性。这代表了一种更为直接的方法,可能在大多数情况下都适用。Angular 1.4中不推荐使用success(),而不是使用它use then()@zsong success方法在这里做什么?它不会将data.members返回给使用者(因为您必须再次写入data.members)
angular.module('App').factory('service', function ($http) {
var service = {
myFunction: function (query) {
var promise = $http({
url: '/Home/GetJson',
method: "GET",
params: {
clientID: cId
}
}).success(function (data) {
return data.members;
});
return promise;
};
}
});
service.myFunction(query).then(function (data) {
$scope.members = data.members;
});