目前我的测试设置是这样的:
app.run(function($rootScope, $http, $location) {
url = $location.path() + '/raw';
$rootScope.test = 'hi';
$http.get(url).success(function(data) {
$rootScope.test = data.personality;
console.log($rootScope.test);//A
});})
app.controller("Big5", function ($scope, $http, $location, $rootScope) {
console.log($rootScope.test);}//B
// A上的console.log按预期工作 - 它从URL中记录JSON。但是,// B上的console.log只返回' hi',最初的$ rootscope.test变量。有任何解决这个问题的方法吗?
我应该提到需要它的页面调用控制器来呈现图形。
答案 0 :(得分:1)
B
处的值被记录为'hi'的原因在于它在执行控制器功能时的值。为了使用HTTP服务调用的结果设置值,您应该从控制器函数中调用它。即
app.controller("Big5", function($rootScope, $http){
$http.get(url).success(function(data) {
$rootScope.test = data.personality;
})
}
更一般地说,使用root作用域是不好的做法,我建议使用$ scope服务:)