所以,我有两个控制器(为简单起见,它们已被简化),每个控制器都有一个功能。这些函数会更改每个控制器内的变量。问题是,看起来只有第一个控制器中的变量才会更新。
app.js
(function() {
var app = angular.module('ScBO', []);
var token = {};
app.controller("LoginController", ['$http', function($http){
this.userData = {};
var lc = this;
this.in = false;
this.loginGo = function(){
$http.post(<link>, <userData>)
.then(function successCallback(response){
token = response.data.access_token;
lc.in=true;
}, function errorCallback(response){
lc.in=false;
});
};
}]);
app.controller("DashboardController", ['$http', function($http){
var dsb = this;
this.totalLocals = 0;
this.refresh = function(){
$http.get('<link>?access_token='+token)
.then(function successCallback(response){
dsb.totalLocals = response.data.number_of_locals.number_of_locals;
}, function errorCallback(response){
});
};
}]);
})();
的index.html
<body ng-controller="LoginController as loginCtrl">
<div id="login-div" ng-hide="loginCtrl.in">
<form ...>
...
</form>
</div>
<div id="dashboard" ng-show="loginCtrl.in" ng-controller="DashboardController as dsb">
<div class="numbers">
<p>Number of Locals</p>
{{dsb.totalLocals}}
</div>
</div>
</body>
所以在html中,第一个div出现在开头而不是第二个。然后它隐藏,第二个div显示出来。这意味着他们正在跟踪loginCtrl.in变量的更新。 但是,当我调用刷新函数时,它不会更新最后一个div中的值。
我已尝试使用$ scope并一直在这里搜索,但我还没有找到解决方案。特别是因为两个控制器是相同的,但它们中只有一个似乎正在更新变量。
答案 0 :(得分:0)
所以,我已经找到了问题所在。 在上面的代码中,错误没有显示,因为为了简单起见我只发布了部分代码,但我认为这已经足够了。
事情是:我有一个按钮,在不同的div中触发刷新功能(如@leonardoborges&#39; plunkr)。就像那两个控制器用他们自己的值实例化,这是我不知道的。超时功能会更新控制器的所有实例,因此让我感到困惑。
所以现在我把所有内容放在控制器的一个实例中。