javascript - Angular : How can I avoid tightly coupling stacked directives when both need values from parent scope?

标签 javascript angularjs angularjs-directive

我正在尝试将第 3 方(非 Angular)库包装在一组 Angular 指令中,以便在我的应用程序中使用。到目前为止,我已经有了一个包含在指令中的基本控件(基本上在链接上它只是用第 3 方控件替换模板中的 div)。我想设置此指令以在我的应用程序中重复使用,因为我将多次需要该控件。这似乎需要隔离范围并在我的 View 上设置绑定(bind)以避免紧耦合。这适用于基本功能,但在某些情况下我需要扩展该控件的功能。

我的想法是创建第二个指令,利用第 3 方库的不同部分向基本控件添加功能。该指令需要与第一个指令中的第三方控件进行通信,并绑定(bind)到父 View 上的值。我将这两个指令都设置为 restrict: 'A' 以使其成为属性,然后我将它们堆叠在我 View 中的单个 div 上 -

<div directive-base directive-add-on />

这里的问题是所有不同部分之间的通信。如果 base 指令是一个隔离范围,则附加组件不能隔离,因此无法与父 View 通信。如果我将它们都设为子作用域,我可以看到父作用域中的所有内容,但这样我的指令就会更紧密地耦合到 View 的 Controller 。

是否有其他方法可以避免紧耦合?

最佳答案

您能否将附加组件视为指令库的属性参数?

通常,我会在元素上有一个指令,例如:

<directive-base add-on="true_or_scope_variable"></directive-base>

在您的指令链接函数或关联的 Controller 中,您可以根据属性值调整内容。

这个有用吗?

关于javascript - Angular : How can I avoid tightly coupling stacked directives when both need values from parent scope?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21412012/

相关文章:

javascript - ionic2 - 仅当用户在 Toast 中单击 "close"时才创建函数

javascript - 使用 php 将数据库中的值设置为 JavaScript

javascript - 在 AngularJS 中使用 $routeProvider 将 Controller 分配给表单模板

javascript - 在不注入(inject) $rootScope 的情况下对指令中的 Angular 事件使用react

javascript - 长 $compile 持续时间,了解 AngularJs 延迟的本质

javascript - 在指令中使用 Controller 属性/方法

javascript - 如何使用列值和行值突出显示/着色表 td?

javascript - 如何无限期地等待,直到页面在 javascript 测试用例中加载

AngularJS ng-keydown 指令仅适用于 &lt;input&gt; 上下文?

javascript - Bootstrap 日期选择器的日期选择器选项被忽略