AngularJS-链接模板后有没有办法调用javascript?

AngularJS-链接模板后有没有办法调用javascript?,javascript,plupload,angularjs,Javascript,Plupload,Angularjs,我正在尝试将jQuery插件()用于AngularJS。我已经创建了一个指令,它将成为我的文件上传“小部件”。指令如下所示(link函数中的代码是的一个非常简化的版本): 我的upload.html文件如下所示: <div id="{{uploaderProperties.container}}"> <div id="{{uploaderProperties.drop_element}}" style="border: 1px black dashed;">Dro

我正在尝试将jQuery插件()用于AngularJS。我已经创建了一个指令,它将成为我的文件上传“小部件”。指令如下所示(link函数中的代码是的一个非常简化的版本):

我的upload.html文件如下所示:

<div id="{{uploaderProperties.container}}">
    <div id="{{uploaderProperties.drop_element}}" style="border: 1px black dashed;">Drop files here<br><br><br></div>
    Files to upload:<br>
    <div ng-repeat="currFile in uploader.files">{{currFile.name}} ({{currFile.size}}) </div>
    <br><br>
    <!-- for debugging -->
    {{uploader.files}}
    <br><br>
</div>

只是为了确保它的行为符合我的想法,而且可以肯定的是,有了这个延迟,插件就可以正确设置并工作了。但是,我不想依赖
$timeout
的计时。如果有什么方法可以调用
scope.uploader.init()链接模板后,一切正常。有人知道这样做的好方法吗?

你的问题实际上是另一种方法——链接功能发生在放入模板之后。因此,在本例中,模板发生时不会设置scope.uploaderProperties

看起来你的模板对于templateUrl选项来说太花哨了,真的。您可以尝试使用jQuery手动设置ID,或者在编译函数中设置所有内容


过去几天我一直在阅读该文件,我仍在努力完全理解其中的一些概念。您说在模板生成时不设置scope.uploaderproperty,但是当我检查DOM时,这两个div具有来自uploaderproperty的正确ID。我是不是误解了你的意思?另外,对于compile函数,我是否只需在pre函数中设置所有属性,然后在post函数中执行init?我仍然不完全理解在编译函数的各个部分应该做什么和不应该做什么。谢谢你的帮助!那么ids将在链接函数发生后的下一次迭代中设置。当模板实际放入时,scope.uploaderProperties中没有任何内容。然后设置它,链接函数稍后会找到它。是的,前后的想法听起来是你最好的选择。我尝试了编译方法,但仍然有完全相同的问题。这个问题不是我在原来的帖子中描述的吗?Plupload使用容器中的值和drop_元素属性来选择这些元素并为插件设置它们。当init()方法在link函数中运行时,id的{{}尚未被替换,因此无法选择它们。我使用$timeout延迟对init()的调用,然后一切正常。我只是不想依赖$timeout的时间。如果您在pre-link或compile中设置ID(手动,使用jquery或其他方法创建元素),然后在post-link中调用init,它应该可以工作。是的,我可以看到它可以工作。只是没有我想要的那么干净。我知道,将jQuery插件与Angular一起使用并不总是能够得到完美、干净的解决方案。如果有一个帖子模板链接钩子来做这类事情,那就太好了。。。谢谢你帮我更好地理解这些东西。
<div id="{{uploaderProperties.container}}">
    <div id="{{uploaderProperties.drop_element}}" style="border: 1px black dashed;">Drop files here<br><br><br></div>
    Files to upload:<br>
    <div ng-repeat="currFile in uploader.files">{{currFile.name}} ({{currFile.size}}) </div>
    <br><br>
    <!-- for debugging -->
    {{uploader.files}}
    <br><br>
</div>
$timeout(function() {
    scope.uploader.init();
}, 2000);