Angularjs:两种方式数据绑定(bind)和 Controller 重新加载

标签 angularjs

如果使用路由和 Controller ,那么模型不会在 Controller 重新加载之间保存他的状态。 Angular 在每次路由加载时创建 Controller 实例和新范围。

例如,我在输入中输入具有 ng-model="something"的内容,转到另一条路线,然后返回第一条路线。我所有输入的文本都丢失了。

我需要在路由更改之间进行简单的双向数据绑定(bind)。尽可能简单,如 knockoutjs 中的 ko.observable。或者在一个 Controller 中隐含地像 Angular 一样。也许使用单例 $scope 作为 Controller ?

我找到了方法,当我创建服务以在路由更改之间保存数据并将其注入(inject) Controller 时。在 Controller 的构造函数中,我使用来自服务的值创建模型,并 $scope.watch 此模型进行更改,并在更改时将模型的值设置为服务。

有没有更简单的方法?

最佳答案

你是对的 - 服务是这样做的正确方法。你可以像这样使用它:

app.js

app.factory('paginationService', function() {
    return {
        cur: 1,
        total: 9,
        pageSize: 8
    };
});


app.controller('Page1Ctrl', function($scope, paginationService) {
  $scope.pagination = paginationService;
});

Page1.html
<div ng-controller="Page1Ctrl">
  <h2>Page1</h2>

  <p>curPage: <input type="number" ng-model="pagination.cur" /></p>  
</div>

full example .

关于Angularjs:两种方式数据绑定(bind)和 Controller 重新加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13840489/

相关文章:

javascript - 我的 {{url}} 怎么了?

javascript - 创建具有依赖项的 Bower 项目

ios - 由于协议(protocol)不匹配,Cordova 包装器中的 Angular Leaflet 不加载图 block

angularjs - Angular,从函数输出到表达式

javascript - 将新的 html 元素插入每个 ng-repeat (AngularJS)

javascript - Angular (jquery timepicker)无法获取输入值

javascript - 除非我输入有效的电子邮件地址,否则 ng-change 不会因电子邮件输入而被解雇

javascript - 对空对象使用 ng-if

AngularJS : transcluding multiple sub elements in a single Angular directive

javascript - 使用 ui-routing 在 Angular 中路由怪异