我发现我正在使用范围。$ evalAsync在指令中非常多。主要是做DOM东西/ jquery插件,需要编译所有模板{{vars}}。
我可以从$ evalAsync内部获取scope对象,但不能获取元素。在最新的案例中,我正在操纵一个使用ngRepeat渲染的元素。我目前通过基于范围对象组合jquery选择器来获取元素,例如
scope.$evalAsync(function (scope) {
$("#item-" + scope.id).runJQplugin();
})
虽然这有效,但对我来说,能够做到这一点会更直观
scope.$evalAsync(function (scope,element) {
element.runJQplugin();
})
我接近这个权利还是我误解了指令的基本内容?
答案 0 :(得分:1)
您始终可以通过闭包范围访问链接和指令控制器中的元素。所以在链接功能中:
link: function(scope, elem, attrs) {
...
scope.$evalAsync(function(scope) {
elem.runJQplugin();
});
...
},
Controller(您需要指定特殊的$element
依赖项):
controller: ["$scope", "$element", function($scope, $element) {
...
scope.$evalAsync(function(scope) {
$element.runJQplugin();
});
...
}],