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



我想把几个较小的指令放在一起来构建更大的指令。什么是最好的方法,因为指令必须沟通,但不能相互冲突。我把一些小例子放在一起,说明我的意思。因此,给定下面的代码,如何在不对指令设置scope : false的情况下从bbb访问bbb aaa

.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. 为两者定义父控制器(例如在该 ng-appdiv 中)。在父控制器中定义共享项。这两个指令都不应该使用隔离的作用域(这样,它们可以看到父作用域中的内容)。你完成了。实际上,如果只有AAA更改数据,则可以将其隔离并让BBB查看数据。但是您需要在 AAA 作用域定义中定义 2 路绑定(作用域:{myvar: '='})

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

最新更新