如何更新我的角度范围**更新**
我正在使用具有异步调用的服务。如何更新我的角度范围**更新**
该服务看起来像那样;
var routesApp = angular.module('routesApp', []); routesApp.factory('angRoutes', function($http) {
var angRoutes = {
async: function(id) {
var data = $.param({
query: id
});
var config = {
headers : {
'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8;'
}
}
var promise = $http.post('../ajax-php.php', data, config)
.success(function (data, status, headers, config) {
return data;
console.log(data);
})
.error(function (data, status, header, config) {
});
return promise;
}
};
return angRoutes;
});
当页面第一次加载时,我使用一个控制器来填充范围;
routesApp.controller('topRoutesCtrl', function topRoutesCtrl($scope,$http, angRoutes) { angRoutes.async('top').then(function(data) {
$scope.angRoutes = data;
console.log(data);
});
});
这一切都很好。但是,当用户点击某件东西时,我使用另一个控制器。
routesApp.controller('navRoutesCtrl', function navRoutesCtrl($scope,$http, angRoutes) { $scope.update = function(id) {
angRoutes.async(id).then(function(data) {
$scope.angRoutes = data;
console.log(data);
});
}
我能看到我在控制台中获取数据和ID并在更新功能获得通过,并且数据corect但它接缝,我的范围不会得到更新。它仍然是页面加载时首先发送的值。
如何更新我的范围?
UPDATE
as seen here
在我的角度HTML我做了NG-重复这样
<div ng-controller="topRoutesCtrl" class="ajax"> <div id="ajaxLoader"> <img class="loadingGif" src =" /images/ajax-loader.gif"> </div>
<div data-ng-repeat="r in angRoutes.data" class="routes-block" >
{{r.name}}
</div>
</div>
现在,如果我做我的角度JS
routesApp.controller('topRoutesCtrl', function topRoutesCtrl($scope,$http, angRoutes) { angRoutes.async('top').then(function(data) {
$scope.angRoutes = data;
console.log(angRoutes);
});
});
注意,在控制台中,我可以看到同样的事情,如果我console.log(data)
或console.log(angRoutes)
我的应用程序但将只如果我做$scope.angRoutes = data;
工作没有东西显示如果我做$scope.angRoutes = angRoutes;
所以也许我现在用的是referencve走错了路在我的NG-重复
回答:
你可以使用包装$超时手动启动$消化cicle
$scope.update = function(id) { angRoutes.async(id).then(function(data) {
$timeout(function() {
$scope.angRoutes = data;
}
console.log(data);
});
}
,但请记住,$消化cicle是$ HTTP调用后全自动triggerd和书面的行为很奇怪
以上是 如何更新我的角度范围**更新** 的全部内容, 来源链接: utcz.com/qa/259696.html