angularjs中partials之间的双向数据绑定

时间:2014-07-03 22:11:46

标签: javascript angularjs angular-ui-router

希望解决看起来相当简单的问题,但不确定如何继续。

我写了一个简单的单页角度应用程序,最近开始将其切换到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',
                }
            }
        })

我的控制器似乎适用于每个部分,但我想基于另一个(表单)的输入来评估一个部分(侧边栏)中的表达式。希望这会让我的问题更加清晰;真的很感激帮助!

1 个答案:

答案 0 :(得分:4)

我注意到的一件事是您ng-controller="MainCtrl"上有div声明。

默认情况下,当您使用ui-router时,您在状态定义中指定的控制器将自动应用于整个页面。通过在HTML中再次声明它,您基本上会将其声明两次。

根据我的理解,HTML中的冗余声明很可能会在DOM中创建额外的$scope。它可以使事情表现得很奇怪。尝试删除它,看看它是否有帮助。