如果使用路由和控制器,则模型不会在控制器重新加载之间保存其状态。 Angular 在每个路由负载上创建控制器实例和新范围。
例如,我在输入中键入具有 ng-model="something" 的内容,转到另一条路线,然后返回第一条路线。我输入的所有文字都丢失了。
我需要在路由更改之间进行简单的双向数据绑定。尽可能简单,就像knockoutjs中的ko.observable一样。或者隐式地像一个控制器中的角度一样。也许用单例 $scope 作为控制器?
当我创建用于在路由更改之间保存数据的服务并将其注入控制器时,我找到了方法。在控制器的构造函数中,我使用服务中的值创建模型,并 $scope.watch 该模型进行更改,并在更改时将模型的值设置为服务。
有没有更简单的方法?
你是对的——服务是做到这一点的正确方法。你可以像这样使用它:
app.js
app.factory('paginationService', function() {
return {
cur: 1,
total: 9,
pageSize: 8
};
});
app.controller('Page1Ctrl', function($scope, paginationService) {
$scope.pagination = paginationService;
});
第1页.html
<div ng-controller="Page1Ctrl">
<h2>Page1</h2>
<p>curPage: <input type="number" ng-model="pagination.cur" /></p>
</div>
See 完整的例子 http://plnkr.co/3Uffdf.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)