【问题标题】:Can an AngularJS Directive Require One Directive or Another?AngularJS 指令可以需要一个或另一个指令吗?
【发布时间】:2015-03-10 07:16:40
【问题描述】:

可以将 AngularJS 指令设置为需要一个或另一个指令吗?

我正在创建两种类型的按钮,它们可以打开带有其他选项的菜单。

<dropdown-button>
</dropdown-button>

其行为类似于 Bootstrap 的下拉按钮。

还有一个……

<split-dropdown-button>
</split-dropdown-button>

这相当于拆分按钮的替代品。

两者都需要一个菜单​​定义,以完全相同的方式完成,所以我想创建一个(例如)button-menu 指令,它需要dropdown-button split-dropdown-button .

这可能吗?

如果指令只能完全需要一个或多个,还有哪些替代方案?

【问题讨论】:

  • 为什么不在这两种类型的指令上使用可选的 require 数组,如果两者都不存在,则在链接函数中抛出异常?
  • 您能详细说明并给出答案吗?我熟悉 require 中的数组,但不熟悉使它们成为可选的能力,如果找不到则抛出异常。
  • 为什么你的require 的值被包裹在一个字符串中?它应该只是一个常规数组。
  • @user2943490 - 啊!这棵树在森林里迷路了。当我将我的需求更改为一个数组并且完全错过了它时,我留下了引号。只是在我查看所有内容时无法看到它们——一次又一次——一次又一次。感谢您发现...它修复了错误。

标签: javascript angularjs angularjs-directive


【解决方案1】:

对不起,在平板电脑上工作,但这里有一些伪代码:

app.directive('buttonMenu', function(){ 
return {
require: ['?dropdownButton', '?dropdownSplitButton'],
restrict: 'E',
link: function(scope, element, attrs, controllers){
if(!controllers[0] && !controllers[1])
//freak out
else
//scope things

【讨论】:

    猜你喜欢
    • 2021-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-26
    相关资源
    最近更新 更多