@jimmy NG:你想对你的数据,甚至刷新后储存在哪里?这一点很重要。
如果你只是想那些值有当前的应用程序运行,假设你有1个CTRL每个主要观点,那么你可以将经由助手服务类(数据管理服务)的表单数据:
myapp.service('viewDataManager', [function() {
var data = {};
// TODO: optionally via HTML5 getter/setter way
return {
get: function (key) { return data[key]; },
set: function (key, newData) { data[key] = newData; }
};
}]);
然后,在破坏view1Controller你只需设置你的表单数据:
$scope.$on('$destroy', function() {
view1DataManager.set('view1FormData', $scope.myModel.formStates);
});
同样,在初始化/构造,重新加载这些状态:
$scope.init = function() {
$scope.myModel.formStates = view1DataManager.get('view1FormData');
};
这是为了让数据保持当前运行的应用程序。对于未来的实例,只需更新数据管理器将其设置为localStorage或websql甚至cookie即可(但不是太推荐)。
注意:您也可以在$ rootScope中存储几乎所有内容,但是从任何方式来看,它都是硬核(架构,性能等)。所以绝对是一个“不要去那里”的事情。
UPDATE: @jimmyng:这是基本不可能的状态存储在对象(又名CTRL),因为对象正在被丢弃和需求再次被实例化(当然)。
假设你所有的UI易失性数据存储在“formStates”中,上面的代码将处理你所需要的。您正在使用AngularJS,所以小部件将绑定到ng-model。你也可以在那里放置选项等选项。
// E.g.:
dropdownlist ---> ng-model -> formStates.selectedXXX
dropdownlist ---> ng-options-> formStates.xxxOptions
textbox ---> ng-model -> formStates.name
etc
一些简单的代码可以帮助,但基本的想法是,你应该创建一个使用两个控制器对DataService和存储在视图1.价值这也将使如果需要视图2访问它。如果不需要,view2不需要引用该服务,因为它将由应用程序实例化并保持实例化,直到应用程序关闭。 – Beartums
你可以发布你的代码吗? – Ved