我有一个实现向导的简单多视图 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
,从应用实例生命周期的一开始就进行所有更改,并且在每次视图更改时都不需要重新实例化它?