Dus*_*tin 13 angularjs angularjs-directive
我有一个接受ng-change属性的指令:
<radio-buttons options="optionsList"
ng-model="myModel"
ng-change="myCallback($event)"></radio-buttons>
Run Code Online (Sandbox Code Playgroud)
我在我的控制器中定义了一个函数,myCallback如下所示:
$scope.myCallback = function(e) {
console.log("Callback from controller");
console.log(e);
}
Run Code Online (Sandbox Code Playgroud)
我的radioButton指令中存在以下函数select .我需要定义何时在select函数中的指令中执行ngChange回调:
function select(scope, val) {
if (!scope.disabled && scope.selectedValue != val) {
scope.selectedValue = val;
scope.model = val;
scope.callback.call();
}
}
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是当我在我的指令函数内执行时,参数$event中myCallback没有被传递.myCallbackselect
小提琴:http://jsfiddle.net/dkrotts/BtrZH/7/更新:http://jsfiddle.net/dkrotts/BtrZH/8/
我究竟做错了什么?
如果您想控制何时调用 ng-change 的处理程序,我认为最简单的方法是完全删除 ng-change - 您可以直接从 ng-click 回调中调用控制器函数。
我认为这可以实现您想要的功能:
如果需要,您可以从单击中捕获事件对象:
ng-click="select(scope, option.value, $event)"
Run Code Online (Sandbox Code Playgroud)
然后您可以在需要时调用控制器函数:
function select(scope, val, $event) {
if (!scope.disabled && scope.selectedValue != val) {
scope.selectedValue = val;
scope.model = val;
scope.$parent.myCallback($event);
}
}
Run Code Online (Sandbox Code Playgroud)
小智 5
您必须像这样在回调中传递参数:
callback({parametername: value});
Run Code Online (Sandbox Code Playgroud)
而且您必须将参数名称与HTML中声明的名称进行匹配
在您的情况下:
callback({$event: val})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
48587 次 |
| 最近记录: |