了解AngularJS指令方法绑定是否默认为angular.noop
Know if AngularJS directive method binding defaults to angular.noop
我有一个简单的指令,传递一个函数到一个插件;然后,插件将使用给定值的函数。为简单起见,让我们忽略对数据的更改:
angular.module('some.directives', [])
.directive('myDirective', [,
function () {
return {
restrict: 'EAC',
scope: {
value: '@', // some value
fun: '&' // the function
},
link: function(scope, element, attrs) {
ThePlugin.thisIsTheVal(scope.value);
ThePlugin.thisIsTheFun(scope.fun);
}
};
}
]);
问题是:当fun
属性没有定义或父作用域没有指定的函数时,ThePlugin
将始终执行angular.noop
,因为这似乎是默认的AngularJS提供。
因为我需要传递一个真正的undefined
时,函数没有定义,我怎么能知道如果调用范围实际上有函数?
一种解决方法可能是根据目标值测试函数,如果结果值是undefined
本身,则返回undefined
:
ThePlugin.thisIsTheFun(function() {
if (scope.fun(scope.value) === undefined) {
return scope.fun;
}
return undefined;
});
这可能会导致一些不一致,因为将来可能允许fun
函数返回undefined
作为正确的结果。
检查是否定义了fun
属性:
if (!attrs.hasOwnProperty('fun')) {
scope.fun = undefined;
}
相关文章:
- 我的shareService在angular 2中发送值工作正常,但当我渲染我的另一个组件时,会获得默认值
- Angular:如何使用ngRepeat并设置默认单选按钮选项
- Angular.js默认选中不'不适用于ng模型
- 为 getter 提供默认值,而不会在 Angular 2 模型类中导致堆栈溢出
- 条件路由更改 Angular 2 中的默认路由
- 我在angular JS中选择的默认选项
- 根据Angular中的单独变量设置下拉默认值
- Angular js在浏览器页面刷新后未路由到默认页面
- Angular-选择不显示在下拉列表中的默认选项
- angular-index.html只识别默认路由中定义的函数
- 我在angular JS中选择了一个默认选项,并删除了两个单词之间的下划线
- 如果不存在任何段落,Angular JS将默认创建段落
- Angular js ng-click对象,逻辑不是(!)默认为真或假
- 在 Angular JS 中为 ng 选项选择默认值
- Angular JS - 具有默认行为的动态指令
- 如果绑定为空,则为 Angular 默认值
- 如何防止默认操作函数按钮(F4,F5等)在Angular js中
- Angular ui.router默认页眉页脚
- Angular.js:prettyPhoto URL重定向到Angular路由中提到的默认页面
- Angular Js:您可以将select的默认值与使用'track by'在ng选项中