Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs angular.js在指令中从$evalAsync内部获取元素_Angularjs_Angularjs Directive_Angularjs Scope - Fatal编程技术网

Angularjs angular.js在指令中从$evalAsync内部获取元素

Angularjs angular.js在指令中从$evalAsync内部获取元素,angularjs,angularjs-directive,angularjs-scope,Angularjs,Angularjs Directive,Angularjs Scope,我发现我经常在指令中使用scope.$evalAsync。主要用于执行需要编译所有模板{{vars}}的DOM stuff/jquery插件 我可以从$evalAsync内部获取scope对象,但不能从元素中获取。在最新的例子中,我正在操作一个元素,该元素使用ngRepeat进行渲染。我目前通过基于scope对象组合一个jquery选择器来获取元素,例如 scope.$evalAsync(function (scope) { $("#item-" + scope.id).runJQplu

我发现我经常在指令中使用scope.$evalAsync。主要用于执行需要编译所有模板{{vars}}的DOM stuff/jquery插件

我可以从$evalAsync内部获取scope对象,但不能从元素中获取。在最新的例子中,我正在操作一个元素,该元素使用ngRepeat进行渲染。我目前通过基于scope对象组合一个jquery选择器来获取元素,例如

scope.$evalAsync(function (scope) {
    $("#item-" + scope.id).runJQplugin();
})
虽然这是可行的,但对我来说,这样做更直观

scope.$evalAsync(function (scope,element) {
    element.runJQplugin();
})

我是在接近这一点,还是我误解了指令的一些基本内容?

您始终可以通过闭包范围从指令的链接和控制器访问元素。因此,在链接功能中:

link: function(scope, elem, attrs) {
    ...
    scope.$evalAsync(function(scope) {
        elem.runJQplugin();
    });
    ...
},
控制器(您需要指定特殊的
$element
依赖项):


我已经在我的指令中尝试了最重要的例子,但我得到了引用错误:elem没有定义fiddle/plunk会有帮助。你的权利我在fiddle中尝试了一个赤裸裸的版本,它可以工作,但是重新访问我的代码它肯定不能。所以我在做一些奇怪的事情。哦,我现在正在使用$(“#item-”+scope.id)。
controller: ["$scope", "$element", function($scope, $element) {
    ...
    scope.$evalAsync(function(scope) {
        $element.runJQplugin();
    });
    ...
}],