Lan*_*don 8 angularjs angularjs-directive
看起来很简单,但我不能从我的指令中获得$ event.当test被调用时cb-click,$event是未定义的,但在指令之外(通过html),它是事件对象.
如果我使用链接功能(不包括在我的小提琴中),我可以得到$event,但我不能$ parse/$ eval它在正确的范围内.
http://jsfiddle.net/langdonx/KgcGY/
<div ng-app="app" ng-controller="x">
<!-- via directive -->
<checkbox cb-model="y" cb-click="test($event, b)"></checkbox>
<!-- via html -->
<div><input id="c2" type="checkbox" ng-model="x" ng-click="test($event, 'a')"> <label for="c2">{{x}}</label></div>
</div>
Run Code Online (Sandbox Code Playgroud)
-
var app = angular.module('app', []);
app.directive('checkbox', function ($parse) {
return {
restrict: 'E',
replace: true,
scope: {
cbModel: '=',
cbClick: '&'
},
template: '<div><input id="c1" type="checkbox" ng-model="cbModel" ng-click="cbClick($event, \'a\')"> <label for="c1">{{cbModel}}</label></div>'
};
});
app.controller('x', function x($scope) {
$scope.x = true;
$scope.y = true;
$scope.test = function (ev, b) {
console.log('test called, ev is', ev, 'b is', b);
return 'xyz';
}
});
Run Code Online (Sandbox Code Playgroud)
Mar*_*cok 10
您需要在指令中使用此语法:
ng-click="cbClick({ev: $event, b:\'a\'})
Run Code Online (Sandbox Code Playgroud)
使用此HTML:
cb-click="test(ev, b)"
Run Code Online (Sandbox Code Playgroud)
从指令页面,"指令定义对象"部分:
通常需要通过表达式将数据从隔离范围传递到父范围,这可以通过将局部变量名称和值的映射传递到表达式包装器fn来完成.例如,如果表达式是,
increment(amount)那么我们可以通过调用localFnas 来指定金额值localFn({amount: 22})
| 归档时间: |
|
| 查看次数: |
25741 次 |
| 最近记录: |