javascript - ng-click 松开功能上下文

标签 javascript angularjs angularjs-directive angularjs-ng-click

我正在使用 angularjs。
我有一个获取函数作为参数的指令:

module.directive('someDirective', [function () {
    return {
        restrict: 'E',
        template: <button ng-click="doClick()">blabla</button>,
        scope: {
            doClick: '='
        }
    };
}]);

我正在这样使用这个指令:

<some-directive do-click="funcOnScope"></some-directive>

一切都很完美。
现在我的范围内有以下内容:

$scope.a = {
    data: { name: 'myname' },
    action: function() {
        alert(this.data.name);
    }
}

调用时:

<some-directive do-click="a.action"></some-directive>

我希望在单击按钮时收到带有“我的名字”的警报。但是我得到一个异常(exception),即数据未定义。发生这种情况是因为“this”引用了窗口(在没有上下文的情况下对 ng-click 函数的 Angular 调用)。
如何在不丢失上下文的情况下调用 a.action()?

最佳答案

将范围定义更改为

scope: {
  doClick: '&'
}

然后这样调用它

<some-directive do-click="a.action()"></some-directive>

here is jsfiddle

关于javascript - ng-click 松开功能上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24408565/

相关文章:

javascript - JavaScript 返回未定义

angularjs - Laravel 5 + AngularJS 跨域 CORS

javascript - ng-table 从范围中过滤串联值

javascript - 你如何在 jasmine 的 ajax 调用中监视回调?

JavaScript - 将多维数组的键从字符串更改为整数

javascript - Angular ngShow 动画不起作用

javascript - 添加 unshift 函数在 angularjs 中不起作用

Javascript 实现困境 : looking for a class with method overriding solution

javascript - react native : Call method of RCTViewManager and Render a View

javascript - angularJs 自定义指令未加载