从AngularJS$http get返回对象
Return object from AngularJS $http get
我使用以下代码获取json对象并将其绑定到$scope
工作代码:
$http({
url: '/Home/GetJson',
method: "GET",
params: {
clientID: cId
}
}).success(function (data) {
$scope.members = data.members;
})
它有效。。我想做的是将结果放入var data
中,然后将其添加到$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.member=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
})
}
//--回调功能工作,代码分离--/
function AssingMemberToScope($scope, data) {
if (data.msg) {
$('.loading').hide();
$scope.member = data.member;
} else {
$('.loading').hide();
$('#msg').show();
}
}
试试这个模式:
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调用放入一个接受callback
函数作为参数的函数中。快速示例:
function makeJSONCall(callback) {
$http({
url: '/Home/GetJson',
method: "GET",
params: { clientID: cId }
}).success(function (data) {
callback(data);
});
}
function someFunctionCallback(param) {
console.log(param)
}
现在,在callback
函数中,对数据执行您想要的操作。当您现在需要JSON函数时,您也可以调用它,一个简单的makeJSONCall(someFunctionCallback)
就可以了。
实际上,您在最后一句话中已经自己解释过了,您可以使用promise和它们的then()回调
var data = $http({
url: '/Home/GetJson',
method: "GET",
params: { clientID: cId }
})
.then(function (data) {
return data.members;
})
};
...
...
data.then(function(response){
//play with the data
$scope.data=response
})
相关文章:
- javascript函数,它接受两个输入:一个对象和一个键,并返回对象中该键的相应值
- 通过数组值返回对象
- JavaScript:返回对象的函数
- 为什么document.getElementsByClassName(“className”)返回对象
- 如何返回对象
- Promise没有;t返回对象的数组
- 面料:“;鼠标:向下”;在event.target中未返回对象
- Lodash:返回对象的第一个键,该对象的值(即数组)中有一个给定的元素(即字符串)
- Javascript:返回对象
- 为什么 javascript 返回对象位置 true 或 false
- 解析查询查找方法返回对象而不是数组
- 来自函数的返回对象在 jQuery 中未从 $.post 定义
- JavaScript 返回对象未按预期工作
- 返回“[对象对象] NaN” - Javascript
- 何时从创建返回对象
- Javascript:接收对象并返回对象中描述的所有数字的列表的函数
- JSDoc:返回对象结构
- node.js请求返回对象
- 返回对象的ECMAScript 6箭头函数
- 如何从控制器返回对象列表并使用JQuery(SpringMVC,ajax)显示它们