如何判断AngularJS中何时缺少自定义指令属性
我有一个自定义指令,当函数被定义为属性时,我想显示执行该函数的按钮。因此,如果定义了on delete,则显示delete按钮。如果未定义on delete,则不显示该按钮 我很难确定函数是否定义为属性 这是我正在尝试的,但它总是将showAdd和showDelete设置为true。 我有这样一个自定义指令:如何判断AngularJS中何时缺少自定义指令属性,angularjs,Angularjs,我有一个自定义指令,当函数被定义为属性时,我想显示执行该函数的按钮。因此,如果定义了on delete,则显示delete按钮。如果未定义on delete,则不显示该按钮 我很难确定函数是否定义为属性 这是我正在尝试的,但它总是将showAdd和showDelete设置为true。 我有这样一个自定义指令: <my-custom-directive on-add="addItem();"></my-custom-directive> 指令模板类似于 app.direc
<my-custom-directive on-add="addItem();"></my-custom-directive>
指令模板类似于
app.directive('myCustomDirective', function() {
var myCustomDirectiveCtrl = ['$scope', function ($scope) {
$scope.showAdd = (typeof($scope.onAdd) !== 'undefined');
$scope.showDelete = (typeof($scope.onDelete) !== 'undefined');
}];
return {
restrict: 'E',
scope: {
onAdd: '&',
onDelete: '&',
},
controller: myCustomDirectiveCtrl,
templateUrl: 'myCustomDirective.html'
};
});
<button ng-show="showAdd">Add</button>
<button ng-show="showDelete">Delete</button>
添加
删除
我做错了什么?有更好的方法吗?既然您在指令(
&
)中将onAdd
和onDelete
声明为表达式绑定,$scope.onAdd
和$scope.onDelete
将始终存在,因为它们声明为解析函数。执行时,它们将解析和计算HTML中传递的任何表达式。当它为空时,它们将不返回任何内容
解决这个问题的一个简单方法是简单地检查指令是否包含add/on delete
属性。您可以使用$attrs
依赖项执行此操作:
var myCustomDirectiveCtrl = ['$scope', '$attrs', function ($scope, $attrs) {
$scope.showAdd = $attrs.onAdd;
$scope.showDelete = $attrs.onDelete;
}];