我正在使用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>
我希望通过“我的名字”和#39;点击按钮时。但我得到一个例外,即数据未定义。这种情况正在发生,因为&#34;这个&#34;正在引用窗口(在没有上下文的情况下对ng-click函数进行角度调用) 如何在不丢失上下文的情况下调用a.action()?
答案 0 :(得分:2)
将范围定义更改为
scope: {
doClick: '&'
}
并称之为
<some-directive do-click="a.action()"></some-directive>
答案 1 :(得分:0)
我不知道这是 正确答案,但这就足够了。在bind
属性
do-click
<some-directive do-click="a.action.bind(a)"></some-directive>
这将强制该函数保持a
上下文。