无法在不同视图中显示Angular模型的副本

时间:2014-12-11 19:58:28

标签: angularjs angularjs-scope

我有一个示例应用程序,我试图在一个视图中显示我的模型,并在另一个视图中编辑它。这是我的控制器:

var app = angular.module('plunker', ['ngRoute']);

app.controller('MainCtrl', function($scope, $location) {
  var self = this;
  this.name = 'World';
  this.someData = {name: 'test'};
  this.someCopyData = {};

  this.theEdit = function(path){
    self.someCopyData = angular.copy(self.someData);
    $location.path(path);
  };
});

app.config(['$routeProvider', function($routeProvider) {
    $routeProvider
        .when('/', {
           templateUrl: 'foo.html',
            controller: 'MainCtrl as main'
        })
        .when('/edit', {
          templateUrl: 'fooedit.html',
          controller: 'MainCtrl as main'
        });


}]);

部分HTML非常简单:

Data: {{ main.someData.name }}
<br>
<br>
<a ng-click="main.theEdit('/edit')" >Resolve View</a>

<input name="name" type="text" ng-model="main.someCopyData.name"/>

Plunker此处。

如何才能显示我的模型副本?这显然是一个范围问题,但我还没有找到对该行为的正确解释。

2 个答案:

答案 0 :(得分:1)

您似乎只有1个视图,您是否尝试为同一个模型制作2个视图?你能告诉我你想要达到的目的吗?

答案 1 :(得分:1)

AFAIR,每次重新创建控制器,即导航到编辑时将获得一个新实例。您可能需要阅读this guide,特别是这一部分:

  

不要使用控制器:   ...   跨控制器共享代码或状态 - 改为使用角度服务。