如何检查指令中是否设置了&variable

ste*_*own 8 javascript angularjs angularjs-directive

在一个指令中,你通过arg设置一个方法回调,比如说:

<my-directive callback='showAlert()' />
Run Code Online (Sandbox Code Playgroud)

您可以通过返回中的范围设置检索变量:

scope: {
    callback: "&callback"
}
Run Code Online (Sandbox Code Playgroud)

如果未设置回调,例如:

<my-directive />
Run Code Online (Sandbox Code Playgroud)

$ scope.callback的值仍然是:

$scope.callback():function (locals) {
    return parentGet(scope, locals);
}
Run Code Online (Sandbox Code Playgroud)

有没有一种好方法可以检查回调是否未设置?

Cha*_*ani 10

我可以想到的一种方法是检查指令名称的属性参数

link: function (scope, elm, attrs) {

   if(attrs.callback) {
       //this attribute has been defined.
   }

}
Run Code Online (Sandbox Code Playgroud)

  • 问题是,对于隔离范围,始终定义参数 (2认同)

Lyu*_*man 9

你可以使用&?insteand &.undefined如果没有提供,它将使$ scope.callback等于.

  • 这比接受的答案更好,因为它与controllerAs语法完全正常,并且不使用链接函数. (2认同)