如何从AngularJS中的外部指令获取内部指令模型值?

时间:2014-11-20 04:13:29

标签: angularjs

我想把几个较小的指令放在一起构建更大的指令。什么是最好的方式,因为指令必须沟通,但不要相互冲突。我把更小的例子放在一起,显示了我的意思。因此,如果给出以下代码,如何在不aaa指令设置bbb的情况下使用scope : false访问bbb

HTML

<div ng-app="myApp">

            <script type="text/ng-template" id="aaa.html">

                <div ng-form name="loginFields">

                    <input ng-model="aaa" type="text" name="bbb" />

                </div>

            </script>

            <script type="text/ng-template" id="bbb.html">

                <form name="rankings" novalidate>

                    <pre>{{aaa}}</pre>

                    <div aaa></div>

                </form>

            </script>

        <div bbb></div>
    </div>

使用Javascript:

app.directive("aaa", ["loginService",
    function(loginService) {
        return {
            templateUrl: "aaa.html",
            replace: true,
            scope: true,
            link: function(scope, elem, attrs) {
            }
        };
    }
]);


app.directive("bbb", [

    function(rankingsService, $rootScope) {

        return {
            templateUrl: "bbb.html",
            replace: true,
            scope: true,
            link: function(scope, elem, attrs) {  
            }
        };
    }
]);

1 个答案:

答案 0 :(得分:1)

  1. 为两者定义父控制器(例如在ng-app div中)。 在父控制器中定义共享项。 两个指令都不应该使用隔离范围(这样,他们可以看到父范围内的什么)。 你做完了 实际上,如果只有aaa更改数据,您可以保持隔离并让bbb查看数据。 但是你需要在aaa范围定义中定义2路绑定(范围:{myvar:'='})

  2. 为两者定义父控制器(例如在ng-app div中)。 当aaa更改数据时(使用$ scope。$ watch或其他东西),发出一个事件($ scope。$ emit('my event',myData); 让父范围捕获事件并向下广播另一个事件($ scope。$ broadcast('my event2',myData) 让bbb听取事件2来获取数据($ scope。$ on('my event2',function(event,myData){})