Angularjs 无法在其他视图中显示角度模型的副本
我有一个示例应用程序,我试图在一个视图中显示我的模型,并在另一个视图中编辑它。这是我的控制器:Angularjs 无法在其他视图中显示角度模型的副本,angularjs,angularjs-scope,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.someCopyDat
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>
Data:{{main.someData.name}
在这里
如何获得要显示的模型副本?这显然是一个范围问题,但我还没有找到正确的行为解释。似乎您只有一个视图您是否尝试为同一模型创建两个视图?你能告诉我你到底想实现什么吗?AFAIR,控制器每次都会重新创建,也就是说,当你导航到编辑时,你会得到一个新实例。您可能需要阅读,尤其是本部分:
不要使用控制器来:
...
跨控制器共享代码或状态-改用angular services
如果您查看Plunker,我想在foo.html
中显示该模型,并在fooedit.html
中编辑其副本。您完全正确。在问了我的问题之后,我发现了另一个类似的问题,所以我将结束这个问题。
<input name="name" type="text" ng-model="main.someCopyData.name"/>