我正在使用一个将href元素附加到标签上的库.在这个链接上,我需要调用一个范围内的
angularjs函数.就像是…
<a href="{{someFunction()}}"></a>
注意:我通过JavaScript从另一个库(nvd3.js)附加这个href,实际上并不是这样写的,因为我可以很容易地使用ng-click或ng-href.
解决方法
这有点复杂.
CAVEAT:这是非常非常黑客,绝对完全是你不应该做的有角度,但我想你知道,图书馆正在使你的生活艰苦…
首先,与onclick不同,href不会将字符串解释为javascript.相反,你必须使用
<a href="javascript:someFunction()"></a>
但是,这一点不会使它起作用,因为someFunction()不是文档上的方法,而是在控制器上,所以我们需要先获取控制器:
<a href="javascript:angular.element( document.getElementById('myController')).scope().someFunction();"></a>
其中myController指的是使用ng-controller装饰的DOM元素,例如
<div data-ng-controller="SomeController" id="myController"> ... </div>
如果someFunction修改视图的状态,您还需要使用$scope.apply,即
<a href="javascript:angular.element(document.getElementById('myController')). scope().$apply(someFunction)"></a>