代碼plunker。 我有兩個控制器。在第一個控制器我有處理按鈕在我看來
$scope.click = function() {
$location.url("/some");
console.log("clicked");
}
在處理程序我更改的URL。我還配置了我的$ routeProvider。
var app = angular.module('plunker', []).config(function ($routeProvider) {
$routeProvider.when('/some', {template: " counter is {{n}}</br> <button ng-click='click()'>click to load new url but still with \"loading cntl\"</button>", controller: "loading"})
.when("/second",{controller: "loading"});
});
在這裏,我有相同的控制器兩種不同的路線 - loading
控制器 所以後,我的網址改爲/some
新的按鈕出現在我的視野。我在loading
控制器中有另一個這個按鈕的處理程序。
app.controller("loading", function ($scope,$location) {
$scope.n= $scope.n || 0;
console.log("at the begining n is "+ $scope.n);
$scope.click = function click() {
$scope.n++;
console.log("n after++ is " + $scope.n);
$location.url("/second");
}
}); 這裏我增加n
變量並將URL更改爲/second
。在我的$routeProvider
我表明,此URL的路線也必須有loading controller
。觸發按鈕後,它會消失,因爲/second
路由器沒有模板。我再次按下主視圖上的按鈕,我的loading controller
再次執行,但n
變量仍爲0.爲什麼n
的值不是1
? 我知道,我的解釋是混亂的,但我在plunker
這是一個很好的例子 - 但我會建議看一下服務而不是rootScope。服務是單身人士,併爲您提供易於測試和嘲笑的好處。 – pherris 2014-10-05 14:05:21
@pherris是的,是的,這就是爲什麼我說OP應該在最終代碼中使用別的東西 - 我是用rootcope做的,因爲這是向他展示代碼中發生了什麼的最快方法。 – Shomz 2014-10-05 14:06:24
@Shomz謝謝! – 2014-10-05 14:12:13