Кажется довольно простым, но я не могу получить $ 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>
-
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';
}
});
Herp с, я должен читать документы больше. Благодаря! – Langdon
@ Langdon, рабочий пример в документах был бы более полезным. Многие пропустили это. (Я, конечно, не получил его в первые несколько раз, когда я его читал.) Я включил ссылку на документацию, чтобы люди могли видеть, где она (кратко) упомянута в документах. –
Вы имеете в виду, где это * было * в документах! Видел это несколько недель назад, но теперь это исчезло. Да здравствует ТАК. –