我正在制作一个主要由来自远程 json 对象的数据驱动的 Angular 网络应用程序。我想用合理的默认数据加载页面,然后请求 json 对象并用这些新数据更新控制器。
这是我所做的服务的一个片段:
clickApp.factory('client', ['$http', function($http){
var logoUrl = "first";
var getConfig = function() {
logoUrl = "second";
$http({method: 'GET', url: base_url+'app-config.json'}).
success(function(data, status) {
// this callback will be called asynchronously
// when the response is available
// console.log("data",data);
console.log("logopre",logoUrl);
logoUrl = "third";
console.log("logopost",logoUrl);
}).
error(function(data, status) {
console.log("error",status);
// called asynchronously if an error occurs
// or server returns response with an error status.
});
};
getConfig();
return {
logoUrl: logoUrl
}
}]);
我有一个连接到这个的控制器,它暂时用 logoUrl 填充 ap 标签。有了这段代码,p标签立即更新为“second”,“logopre”的日志值为“second”,“logopost”的日志值为“third”,但控制器并未将p标签更新为“第三”如我所料。
我也在我的控制器中尝试了一些花哨的 $scope.$watch 语句,但这并没有改变结果。
编辑我应该注意到,在 $http 请求之后我也尝试了 $rootScope.$apply 但我只能得到“$digest already in progress”错误。
如何正确更新此值,以便在 $http 请求后反映在我的控制器中?