是否可以使用可选的&符号(父上下文)数据绑定创建隔离范围?
scope: {
myMethod: '&?'
}
如果在没有分配myMethod的情况下实现该指令,则没有错误。但是,我看到当未分配可选属性时,角度无论如何都会为其赋予noop功能。因此,似乎没有办法在指令中知道实现者是否为可选属性分配了方法。
link: function (scope, element, attrs) {
scope.myMethod(); //this calls a noop function instead of being undefined, as i exected
}
任何见解?我想知道实现者是否已经分配了可选属性。
答案 0 :(得分:15)
检查attrs
对象以查看它是否已填充:
link: function (scope, element, attrs) {
if (attrs.myMethod) {
scope.myMethod();
}
}
答案 1 :(得分:14)
使用'&?'如果尚未设置属性,则返回undefined。
https://github.com/angular/angular.js/commit/6a38dbfd3c34c8f9efff503d17eb3cbeb666d422