【问题标题】:Running script within ui-router TemplateURL在 ui-router TemplateURL 中运行脚本
【发布时间】:2015-06-17 01:08:17
【问题描述】:

我目前有一个使用 Angular 和 UI-Router 的单页 Web 应用程序。我的大部分 javascript 文件都加载到我的 index.html 页面上,并且这些文件在整个应用程序中都能完美运行。

问题:我的状态需要在调用状态时运行 javascript 代码。 (当 ui-router 将此状态的特定 templateURL 中的 html 注入 ui-view 时,我需要运行注入的 html 中的 javascript)。我整天都在搜索并尝试了各种解决方案,但没有任何效果。

是否有添加此功能的最佳做法?谢谢。

【问题讨论】:

    标签: javascript angularjs angularjs-directive angular-ui-router


    【解决方案1】:

    目前尚不清楚,但我认为问题在于您注入的 HTML 中的 script 标记没有运行。您需要创建一个允许您执行此操作的指令,而不是使用标准的 script 标记。有关如何执行此操作的说明,请参阅 Paolo 在 this page 上的回答。

    请注意,如果您这样做,您将承担脚本安全的部分责任。

    【讨论】:

    • 这看起来与我正在尝试做的完全一样。那么我是否必须为每个需要加载到状态的 javascript 文件创建一个单独的指令(不是什么大问题,但很好奇)?最后一步是什么,只需在我所在州的 templateURL 中包含指令中的元素。例如,Paolo 会在 templateUrl 中包含 以表示他将 google api 加载到的状态?谢谢。
    • @user2263572:不,一旦你编写了指令,你就可以在任何地方重复使用它。您最多需要两个:一个用于运行直接嵌入在您尝试包含的 HTML 中的 javascript(例如,<run-script>var foo = "bar";...</run-script>),另一个用于从另一个位置加载 javascript(例如 <load-script url="http://cdn.foo.com/mylib/1.0"></load-script>)。只需将您尝试包含的 HTML 中的 script 标记更改为适当的指令即可。
    • 我能够为两种类型的脚本实现延迟加载。不幸的是,虽然延迟加载适用于我的测试脚本,但它不适用于我试图延迟加载的谷歌图表 API。如果您认为自己知道为什么可以在此处找到新问题。 link再次感谢您的帮助,我取得了一些扎实的进展。
    猜你喜欢
    • 1970-01-01
    • 2016-02-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-23
    相关资源
    最近更新 更多