希望解决看起来相当简单的问题,但不确定如何继续。
我写了一个简单的单页角度应用程序,最近开始将其切换到ui.router
(极好的角度ui变种)。对于应用程序的要求,它允许我做的远远超过常规ngRoute
模块(特别是嵌套视图)。
转换之后,我发现我在部分之间绑定数据时遇到了麻烦。我有一个主视图,其中有几个子视图需要能够在它们之间进行实时数据绑定。之前这不是问题,因为每个组件都存在于一个视图中(我将它们分成子视图/部分并用ui-router包含它们)。
所以,这就是我现在所设置的内容:
index.html
中的ui-view
主视图曾经包含多个部分内容。
main view
-form partial
-preview pane partial
-review partial
-submission partial
我只创建了一个控制器来处理应用程序的这一部分; partials似乎与控制器传递的数据一起使用,但不与彼此之间的数据绑定有关。
我需要做的是实现部分形式的输入和预览部分之间的实时数据绑定;什么是最好的方法呢?服务,指令?
谢谢大家!
ps:如果你不熟悉UI Router
,你可以用常规ngRoute
来解释,我可以弄清楚
编辑:以下是我的状态设置方式:
(包含部分内容的主要区域,由ng-app指令包围)
<div ng-controller="MainCtrl" class="contstrain_y_scroll">
<section>
<div ui-view="form"></div>
<div ui-view="tribute"></div>
<div ui-view="submit"></div>
<div ui-view="sidebar"></div>
</section>
</div>
(在app.js中)
$stateProvider
.state('main', {
url: '/',
controller: 'MainCtrl',
views: {
'sidebar': {
templateUrl: 'views/partials/main.sidebar.html',
},
'form': {
templateUrl: 'views/partials/main.form.html',
},
'tribute': {
templateUrl: 'views/partials/main.tribute.html',
},
'submit': {
templateUrl: 'views/partials/submit.html',
}
}
})
我的控制器似乎适用于每个部分,但我想基于另一个(表单)的输入来评估一个部分(侧边栏)中的表达式。希望这会让我的问题更加清晰;真的很感激帮助!
答案 0 :(得分:4)
我注意到的一件事是您ng-controller="MainCtrl"
上有div
声明。
默认情况下,当您使用ui-router
时,您在状态定义中指定的控制器将自动应用于整个页面。通过在HTML中再次声明它,您基本上会将其声明两次。
根据我的理解,HTML中的冗余声明很可能会在DOM中创建额外的$scope
。它可以使事情表现得很奇怪。尝试删除它,看看它是否有帮助。