0
因此,我有兩個控制器(它們已被簡化爲簡化),每個控制器都有一個函數。這些功能在每個控制器內改變一個變量。事情是,它看起來只有第一個控制器中的變量被更新。變量不更新外部函數
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中的值。
我已經嘗試過$範圍,並一直在這裏搜索,但我還沒有找到解決方案。特別是因爲兩個控制器是平等的,但其中只有一個似乎正常更新變量。
你確定你的'$ http' req解決了嗎? – Rahul
我做了這個plunkr試圖模擬你的問題,對我來說它似乎工作:https://plnkr.co/edit/ySNl3t17vKMgaRKn8LR6?p=preview – leonardoborges
@Rahul我試着把一個console.log(response.data .number_of_locals.number_of_locals);在分配給變量dsb.totalLocals之後,看到來自服務器的值是正確的。 – Johnny