我正在使用 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>
关于javascript - ng-click 松开功能上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24408565/