Angular.JS:观点分享同一个控制器,改变视图时,模型数据重置 [英] Angular.JS: views sharing same controller, model data resets when changing view

查看:94
本文介绍了Angular.JS:观点分享同一个控制器,改变视图时,模型数据重置的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我开始使用Angular.JS。

I'm getting started with Angular.JS.

我有许多共享相同控制器观点。每个视图是在收集数据的步骤中存储的所述控制器:

I have a number of views that share the same controller. Each view is a step in collecting data that is stored in the controller:

$routeProvider.when('/', {
  templateUrl: 'partials/text.html',
  controller: 'itemSubmitter'
});

$routeProvider.when('/nextThing', {
  templateUrl: 'partials/nextthing.html',
  controller: 'itemSubmitter'
});

该itemSubmitter控制器:

The itemSubmitter controller:

$scope.newitem = {
  text: null
}

这是第一个观点:

Here's the first view:

<textarea ng-model="newitem.text" placeholder="Enter some text"></textarea>

<p>Your text is:
{{ newitem.text }}</p>

这工作的,活更新您的文字是:'段落

This works, live updating the 'Your text is:' paragraph.

然而,当一个视图被加载, {{} newitem.text} 被重置为默认值。如何让存储在控制器的实例值跨越的观点坚持?

However when the next view is loaded, {{ newitem.text }} is reset to its default value. How can I make values stored in a controller instance persist across views?

推荐答案

控制器改变路由时设置。这是一个好现象,因为你不应该依赖于控制器进行视图之间的数据。最好是建立一个服务来处理这些数据。

Controllers are disposed when changing routes. This is good behavior since you should not rely on controllers to carry data between views. It's best to create a service to handle that data.

请参阅如何正确使用控制器的角度文档。
<一href=\"http://docs.angularjs.org/guide/dev_guide.mvc.understanding_controller\">http://docs.angularjs.org/guide/dev_guide.mvc.understanding_controller

See the angular docs on how to use controllers correctly. http://docs.angularjs.org/guide/dev_guide.mvc.understanding_controller

要从文档引述如下:

在一般情况下,一个控制器不应该试图做太多。它应该包含只需要一个单一的视图中的业务逻辑。

Using Controllers Correctly

In general, a controller shouldn't try to do too much. It should contain only the business logic needed for a single view.

要保持苗条的控制器最常见的方式是通过封装不属于控制器到服务的工作,然后通过依赖注入在控制器使用这些服务。这本指南的依赖注入服务的章节中讨论。

The most common way to keep controllers slim is by encapsulating work that doesn't belong to controllers into services and then using these services in controllers via dependency injection. This is discussed in the Dependency Injection Services sections of this guide.

不要使用控制器进行:


      
  • 任何一种DOM操作 - 控制器应该只包含业务逻辑。 DOM操纵的一个的presentation逻辑应用是众所周知的,是很难测试。把任何presentation逻辑控制器将影响显著业务逻辑的可测试性。角报价数据绑定自动DOM操作。如果必须执行自己的手工DOM操作,封装presentation逻辑指令。

  •   
  • 输入格式化 - 使用角度表单控件,而不是

  •   
  • 输出滤波 - 使用角度滤镜代替

  •   
  • 要运行在控制器之间共享的无状态或有状态code - 使用角度,而不是服务

  •   
  • 要实例化或管理其他组件的生命周期(例如,创建服务实例)。

  •   

这篇关于Angular.JS:观点分享同一个控制器,改变视图时,模型数据重置的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆