【问题标题】:Isolate scope directive with optional ampersand binding in angularjs?使用angularjs中的可选与号绑定隔离范围指令?
【发布时间】:2014-07-09 20:16:07
【问题描述】:

可以使用可选的 & 号(父上下文)数据绑定创建一个隔离范围吗?

scope: {
  myMethod: '&?'
}

如果在未分配 myMethod 的情况下执行指令,则不会出错。但是,我看到当未分配可选属性时,角度无论如何都会为其分配一个 noop 函数。因此,在指令中似乎无法知道实现者是否为可选属性分配了方法。

link: function (scope, element, attrs) {
 scope.myMethod(); //this calls a noop function instead of being undefined, as i exected
}

有什么见解吗?我想知道实现者是否分配了可选属性。

【问题讨论】:

    标签: angularjs


    【解决方案1】:

    检查attrs 对象是否已填充:

    link: function (scope, element, attrs) {
        if (attrs.myMethod) {
            scope.myMethod();
        }
    }
    

    【讨论】:

      【解决方案2】:

      使用“&?”如果该属性尚未设置,则返回 undefined。

      https://github.com/angular/angular.js/commit/6a38dbfd3c34c8f9efff503d17eb3cbeb666d422

      【讨论】:

      • 取决于您使用的 AngularJS 版本!如果您遇到没有此修复的版本,@DRiFTy 的回答是正确的!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-30
      • 1970-01-01
      • 1970-01-01
      • 2014-12-26
      • 1970-01-01
      相关资源
      最近更新 更多