2016-08-18 54 views
0

某些用户发布了issue on my Github project,我根本无法帮助他,因为我没有使用AngularJS。当AngularJS 2中的文档准备就绪时按钮单击时计划动画

问题

AngularJS做它的东西,在文件渲染,因为我理解,但我的脚本KUTE.js预计到AngularJS定义的元素是已经在DOM,因为KUTE.js只有当它的链接工作在<body>的末尾。

可能的解决方案

我需要一种方法来订购代码执行的方式,就是用正确的执行顺序原生HTML5脚本:

  • HTML渲染
  • AngularJS执行/渲染
  • JS执行(KUTE.js)

由于此处的代码编辑器不支持Angular stuff,因此here's a plunker出现问题。

回答

1

Angular呈现并与DOM进行交互的方式是Angular如何以其核心作用的固有方式,而且您不能(也不应该)真的对此做任何事情。

无论如何,问题不在于您的图书馆在触发动画时找不到元素。在Tween对象的console.log中,_el: path项目正确指向矩形元素。 Element not found or incorrect selector: path错误是由您的selector()函数抛出的,该函数出于某种原因在应用程序加载时被调用。如果您的图书馆在Angular已经有机会将它们附加到DOM之前正在加载某些元素,那么它不会起作用。

随着所有这一切说,我能得到the Plunker to workselector()函数在加载时运行的原因是因为它正在寻找DOM上的svg元素。如果你在index.html的主体上放置了一个空路径的虚拟svg,它可以防止选择器错误被抛出。现在,当你点击按钮来触发动画时,它会通过它的ID找到Angular组件模板内部的路径(它不关心它们是否与之前发现的svg相同),并遵循动画。

+0

让我看看我能用这个解决方案做什么。非常感谢。 – thednp

+0

好的,我找到了问题并修复了问题,插件使用'.selector()'方法,不需要的话,我应该一直使用'querySelector()'。 https://github.com/thednp/kute.js/commit/1d153c363adbef8d1fc7e01dc272501899816daf – thednp