我有一个示例应用程序,我试图在一个视图中显示我的模型,并在另一个视图中编辑它。这是我的控制器:
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此处。
如何才能显示我的模型副本?这显然是一个范围问题,但我还没有找到对该行为的正确解释。
答案 0 :(得分:1)
您似乎只有1个视图,您是否尝试为同一个模型制作2个视图?你能告诉我你想要达到的目的吗?
答案 1 :(得分:1)
AFAIR,每次重新创建控制器,即导航到编辑时将获得一个新实例。您可能需要阅读this guide,特别是这一部分:
不要使用控制器: ... 跨控制器共享代码或状态 - 改为使用角度服务。