考虑以下角度指令:
<my-datepicker
ng-model="myController.user.dob"
min="1960-01-01"
max="2017-12-31"
isValid="myController.validateDOB(myController.user.dob)"
></my-datepicker>
在这种情况下,validateDOB
函数将在控制器的范围内调用。我想在指令范围内调用它以便能够使用其min和max属性。我试着这样做:
<my-datepicker
ng-model="myController.user.dob"
min="1960-01-01"
max="2017-12-31"
isValid="myController.validateDOB.call(this, myController.user.dob)"
></my-datepicker>
失败并出现异常:
Error: [$parse:isecff] Referencing call, apply or bind in Angular expressions is disallowed!
有没有解决方法呢?
答案 0 :(得分:0)
Angular提供了'&'
绑定选项,您可以在指令函数中调用conttroller的函数。
家长控制器
app.controller('myCntrl', function($scope) {
var myController = this;
myController.validateDOB = function(dob) {
// some code
};
})
<强>指令强>
app.directive('myDatepicker, function() {
return {
template: '<button ng-click="handleClick()">Click</button>',
scope: {
validateDob: '&'
},
controller: function($scope) {
$scope.handleClick = function() {
$scope.validateDob({dob: 'dob'})
};
}
}
})
<强>用法:强>
<div ng-controller="myCntrl">
<my-datepicker validate-dob="myController.validateDOB(dob)"></my-datepicker>
</div>