我有一個簡單的多視圖Angular應用程序,它實現了一個嚮導,所以每次用戶點擊「下一步」按鈕時,應用程序都會導航到下一個視圖,而「後退」按鈕。我有一個$routeProvider
配置,將所有視圖綁定到同一個控制器。每個視圖表示與輸入字段巨大的形式的塊,和$routeProvider
管理跨它們導航:重新調用控制器時丟失輸入數據
app.config(['$routeProvider', '$locationProvider', function ($routeProvider, $locationProvider) {
$routeProvider.when('/salespoints', {
templateUrl: 'salespoints',
controller: 'main'
})
.when('/users', {
templateUrl: 'users',
controller: 'main'
})
.otherwise({
templateUrl: 'partner',
controller: 'main'
});
$locationProvider.hashPrefix('');
}]);
的問題是,每次用戶點擊「下一個」或「返回」時,所述控制器被調用,所以所有在前面的步驟中所做的$scope
變化只是丟失:
app.controller('main', ['$scope', function ($scope) {
console.log('controller invoked'); // appears each time a user presses "Next" or "Back", hence re-instantiation of $scope
}]);
的應用是足夠小,轉向$rootScope
的情況下,所有其他方法失敗,但我只是想避免,作爲一個反模式。
將$scope
保持在最新狀態的最佳方法是什麼?所有更改都是從應用實例生命週期的最初階段開始的,並且不會在每次更改視圖時重新實例化它?
如果你wan't一個容器級別 – gr3g