AngularJS - 当元素在ng-include中时获取工厂中的元素

时间:2014-02-20 08:50:50

标签: javascript angularjs angularjs-ng-include

我正试图在我看来抓住每个“noscript”标签。 我在工厂中创建了一个函数,并在启动控制器时调用它。

这是我的功能:

angular.forEach(angular.element(document.querySelector('noscript')), function (value, key) {
// some code

问题是“noscript”元素在ng-include中,似乎在控制器之后启动了include。 然后,我无法抓住这些元素!

最好的方法是什么? 谢谢提前:)

3 个答案:

答案 0 :(得分:1)

您可以编写一个指令来公开处理include中noscript标记的函数。您可以通过onload的{​​{1}}属性调用该函数。

小提琴:http://jsfiddle.net/REYhN/

请注意,您应该避免在控制器中进行DOM操作。这就是指令:http://docs.angularjs.org/api/ng/service/ $ compile

答案 1 :(得分:0)

得到它!

我在我的路线中打电话给我的控制器..我在某处读到这不是一个好习惯。 现在明白为什么。

解决方案是通过ng-controller调用部分控制器。 然后,你可以做任何你想做的事情并获得每个dom元素:)。

答案 2 :(得分:0)

不确定为什么要捕获noscript标记,但是您是否考虑过使用modernizr而不是noscript标记?

  

w3c noscript

     

noscript元素是一种钝器。有时,脚本可能会   启用,但由于某种原因,页面的脚本可能会失败。为了这   原因是,通常最好避免使用noscript,而是使用noscript   设计脚本将页面从无脚本页面更改为   脚本页面即时...