看起来很简单,但我不能从我的指令中获得$ event。 当从cb-click调用test时, $event是未定义的,但在指令之外(通过html),它是事件对象。

如果我使用链接函数(不包括在我的小提琴中),我可以得到$event ,但是我不能在正确的范围内解析/ $ 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';
    }
});

===============>>#1 票数:10 已采纳

您需要在指令中使用此语法:

ng-click="cbClick({ev: $event, b:\'a\'})

使用此HTML:

cb-click="test(ev, b)"

小提琴

指令页面 ,“指令定义对象”部分:

通常需要通过表达式将数据从隔离范围传递到父范围,这可以通过将局部变量名称和值的映射传递到表达式包装器fn来完成。 例如,如果表达式是increment(amount)那么我们可以通过将localFn称为localFn({amount: 22})来指定金额值

  ask by Langdon translate from so

未解决问题?本站智能推荐:

1回复

AngularJS中的指令

嗨,我正在尝试学习AngularJS指令,我真的很接近,但是我想通过清除和解耦指令代码来扩展我的学习范围。 指示: }); 如您所见,我不是在尝试编写内联模板,而是使用templateUrl。 现在问题出在控制器上,当我尝试使用.js控制器而不是内联编写控制器代码时,我收到
1回复

angularjs指令中的Java脚本事件问题

我正在为HTML表单做一个简单的指令,将两个不同的下拉列表(一个月和一个日期)中选择的日期与当前日期进行比较,如果表单中的日期早于当前。 但是,由于我正在使用javascript的事件“更改”,因此它几乎可以正常工作,当我通过“ tab”键进入下拉菜单时,按下上下箭头键来更改下拉菜单中的值,即
2回复

事件不会触发angularjs指令中的运行时控件

使用AngularJS创建指令。 该指令显示运行时(动态)控件,但不会触发控制器事件。 谁能帮我。 注意:在指令中也使用了compile。 plnkr链接如下。 HTML Plunkr
1回复

AngularJS外部事件在子指令中不起作用

我正在尝试在按钮内部创建一个下拉列表-单击该按钮时,下拉列表应打开。 我正在尝试通过单击外部隐藏列表。 下拉菜单实际上是在外部单击时关闭的,但是在列表上单击时也会关闭的-这是不期望的。 在列表内部单击时,如何保持列表打开? stopPropagation对我来说不是一个好的解决方案,因为
1回复

如何绑定到angularjs指令中的自定义事件?

我无法捕获像这样发送的事件: 下面的指令是在一个div,在身体内: 如果在div上使用triggerHandler发送事件,则此方法有效。 如何在指令内的文档主体上捕获自定义事件? 更新:这是用于Cordova应用程序,带有现有插件,可在document.body上
2回复

如何在angularJS指令中捕获模糊或焦点事件

我有输入指令 我像这样使用这个指令: 我希望在我的指令内模糊后,在input-ext中执行模糊...,对于控制器中的这个示例代码,如何制作这个?
1回复

angularjs-指令-双向绑定,从指令中的集合获取键

我试图建立一个指令选择器对话框,输入是json数据的集合。 然后,我尝试在模板中使用表,其中收藏键位于thead中。 问题是,收集数据显示正常(当前在模板中仅显示'name'属性),我无法获取键,因为$ scope.collection返回未定义。 使用Lo-Dash获取密钥。 我有
2回复

AngularJS - 从partial in指令中获取html

我以角度创建了一个自定义指令,这样我就可以在提交时淡出一个表单,并用带有自定义消息的模板替换它。 所需的工作流程如下: 用户填写表单并单击“提交”。 控制器使用新对象更新模型,并使用一些args发出“formSubmitted”事件。 该指令侦听事件并淡出表单。
3回复

AngularJS指令创建点击事件

我有一个简单的指令,像这样: index.html my-customer.html 我想为单击按钮创建事件,然后在控制器中使用此事件。 但是我不知道该怎么做。 请帮助我。 非常感谢。
2回复

angularJS在内存中执行指令并获取innerHTML

我已经在angularJS中创建了一条指令,该指令为<print-note print-data='printData' id='notePrintDiv'></print-note>该指令将使用一些对象并创建用于打印的格式化html,但是我没有要在主html中显示格式化