我刚刚开始学习Angular.js。如何在Angular.js中重新编写以下代码?
var postData = "<RequestInfo> " + "<Event>GetPersons</Event> " + "</RequestInfo>"; var req = new XMLHttpRequest(); req.onreadystatechange = function () { if (req.readyState == 4 || req.readyState == "complete") { if (req.status == 200) { console.log(req.responseText); } } }; try { req.open('POST', 'http://samedomain.com/GetPersons', false); req.send(postData); } catch (e) { console.log(e); }
到目前为止,这是我的-
function TestController($scope) { $scope.persons = $http({ url: 'http://samedomain.com/GetPersons', method: "POST", data: postData, headers: {'Content-Type': 'application/x-www-form-urlencoded'} }).success(function (data, status, headers, config) { $scope.data = data; // how do pass this to $scope.persons? }).error(function (data, status, headers, config) { $scope.status = status; }); }
html
<div ng-controller="TestController"> <li ng-repeat="person in persons">{{person.name}}</li> </div>
我的方向正确吗?
在当前函数中,如果要分配$scope.persons给$http一个promise对象,则$http返回一个promise对象。
$scope.persons
$http
因此,除了分配scope.persons给$ http之外,您还应该$scope.persons在成功的内部分配,$http如下所述:
scope.persons
function TestController($scope, $http) { $http({ url: 'http://samedomain.com/GetPersons', method: "POST", data: postData, headers: {'Content-Type': 'application/x-www-form-urlencoded'} }).success(function (data, status, headers, config) { $scope.persons = data; // assign $scope.persons here as promise is resolved here }).error(function (data, status, headers, config) { $scope.status = status; }); }