我的问题更多的是算法而不是代码。
让我们解释一下我的想法:
我有一个树形视图,其中包含我可以订购的元素。当我双击其中一个元素时,我希望页面切换到一个表单,填充所单击元素的信息。当我保存表单时,它会返回树视图,修改元素。
我是怎么做到的?
我的主视图treeView及其控制器treeViewController。我有一个加载元素的工厂。
//treeViewController
$scope = factory.getelement()
//whatever else I need
我试图有另一种观点" fullEdit"我希望它完全分享范围(它也可以共享它实际上并不相同的控制器)。 这意味着我在" fullEdit"中修改$ scope.element。它在树上修改过。
问题是,当控制器加载示波器时,每次切换视图时我都会重新加载 范围。
我尝试过具有嵌套状态的ui-router(我不认为这是解决方案)。许多人建议多视图来获得我想要的东西,但是我已经尝试过了,我得到的只是同一页面上的两个视图,这不是我想要的。此外,似乎这两种观点仍然是独立的。
此外,使用全球范围似乎不是一个好的解决方案。
编辑/实际上我的问题是当我更改视图时控制器被执行,因此范围从后端重新加载。我不想要那个,我想分享$ scope,但每次更改视图时都不会重新加载它!
答案 0 :(得分:1)
angular.module('myApp', [])
.controller('myCtrlOne', function myCtrlOne($scope, reusableData) {
$scope.service = reusableData
})
.controller('myCtrlTwo', function myCtrlOne($scope, reusableData) {
$scope.service = reusableData
})
.service('reusableData', function() {
return {
message: 'initial msg'
}
})

<!DOCTYPE html>
<html ng-app="myApp">
<head>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.26/angular.min.js"></script>
</head>
<body>
<div ng-controller="myCtrlOne">
<input type="text" ng-model="service.message">
</div>
<hr>
<div ng-controller="myCtrlTwo">
<input type="text" ng-model="service.message">
</div>
</body>
</html>
&#13;
如果你运行这个片段(上帝我有这个功能),你会在不同的控制器中看到两个输入,它们通过服务共享数据,只要页面没有重新加载服务(这是简单的 - 一个每次运行的实例)将保留您的更改