我想把几个较小的指令放在一起来构建更大的指令。什么是最好的方法,因为指令必须沟通,但不能相互冲突。我把一些小例子放在一起,说明我的意思。因此,给定下面的代码,如何在不对指令设置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) {
}
};
}
]);
-
为两者定义父控制器(例如在该 ng-appdiv 中)。在父控制器中定义共享项。这两个指令都不应该使用隔离的作用域(这样,它们可以看到父作用域中的内容)。你完成了。实际上,如果只有AAA更改数据,则可以将其隔离并让BBB查看数据。但是您需要在 AAA 作用域定义中定义 2 路绑定(作用域:{myvar: '='})
-
为两者定义父控制器(例如在该 ng-appdiv 中)。当 aaa 更改数据(使用 $scope.$watch 或其他东西)时,发出一个事件($scope.$emit("我的事件",myData);让父范围捕获事件并向下广播不同的事件($scope.$broadcast("我的事件2",myData)让 bbb 侦听事件 2 以获取数据 ($scope.$on('my event2', function (event, myData){})