当前位置: 首页 > 面试题库 >

如何加载ng-include模板和javascript文件

萧升
2023-03-14
问题内容

我使用以下代码将模板包括到我的主文件中。

<p ng-include=" 'activity.html' "></p>

我的 activity.html 像这样,

<script type="text/javascript" src="myjsfile.js"></script>

<p>Activity page contents</p>

但是javascript并没有随模板一起加载

我在SO中发现了一些与此问题相关的问题,但找不到有效的解决方案。答案之一是在主文件中的angularjs上方加载jquery,以便脚本标记将被接受。但没有发现它起作用。


问题答案:

我在ng-include里面的加载脚本中找到了这个答案,不幸的是那里没有被接受的答案。因此,我在这里为它提供一些更多更新以供需要。

图书馆链接在这里

创建一个包含以下脚本的js文件并将其加载到主文件中。

(function (ng) {
    'use strict';

    var app = ng.module('ngLoadScript', []);

    app.directive('script', function() {
        return {
            restrict: 'E',
            scope: false,
            link: function(scope, elem, attr) {
                if (attr.type=='text/javascript-lazy') {
                    var code = elem.text();
                    var f = new Function(code);
                    f();
                }
            }
        };
    });
}(angular));

并且,将 模块作为应用程序依赖项 加载ngLoadScript

angular.module('myApp', [
    'ngLoadScript'
])

在Partial( activity.html)中text/javascript-lazy用作标记的type属性值,script而不是text/javascript

<script type="text/javascript-lazy">
    alert("Yup!");
</script>

加载外部js需要做的更多事情:

我已经使用了以下来自ddrive的代码来加载脚本(在main.html中

function loadjscssfile(filename, filetype) {
    if (filetype == "js") {
        // if filename is a external JavaScript file
        var fileref = document.createElement('script');
        fileref.setAttribute("type","text/javascript");
        fileref.setAttribute("src", filename);
    }
    else if (filetype == "css") {
        //if filename is an external CSS file
        var fileref = document.createElement("link");
        fileref.setAttribute("rel", "stylesheet");
        fileref.setAttribute("type", "text/css")
        fileref.setAttribute("href", filename)
    }
    if (typeof fileref != "undefined") {
        document.getElementsByTagName("head")[0].appendChild(fileref)
    }
}

以及部分(activity.html):

<script type="text/javascript-lazy">
    loadjscssfile("myjsfile.js", "js");
</script>


 类似资料:
  • 本文向大家介绍angular之ng-template模板加载,包括了angular之ng-template模板加载的使用技巧和注意事项,需要的朋友参考一下 本文介绍了angular之ng-template模板加载,分享给大家,具体如下: html5中的template template标签的含义:HTML <template>元素是一种用于保存客户端内容的机制,该内容在页面加载时是不可见的,但可以

  • 问题内容: 刚达新到角。是否可以用包含的模板的内容 替换 ng-include节点?例如,使用: 生成的html是: 但是我想要的是: 问题答案: 我遇到了同样的问题,但仍然希望ng- include的功能包括动态模板。我正在构建一个动态的Bootstrap工具栏,我需要更清洁的标记才能正确应用CSS样式。 这是我为感兴趣的人提供的解决方案: HTML: 自定义指令: 如果在上面的示例中使用了此解

  • 问题内容: 我试图用BottlePy返回一个html模板。这很好。但是,如果我在tpl文件中插入这样的javascript文件: 我收到404错误。 (无法加载资源:服务器响应状态为404(未找到)) 有谁知道如何解决这个问题? 这是我的脚本文件: 那就是模板文件,位于“ ./views”子文件夹中。 也许是开发服务器在其中查找我的js文件的“ rootPath / js / main.js”?

  • 问题内容: 我正在尝试呈现一段动态路线上可用的html,该路线是通过调用获取的,它返回了一段html, 仅举一个例子,我尝试加载此html部分: 我做了一个小提琴,以模拟问题,但是为了简单起见,我省去了http调用,只是将html添加到了作用域中的字符串中。 控制器是: 页面html是这样的: 问题在于,它不会将字符串添加到html文件(ng-include)中,但是会明显地对由该字符串组成的ur

  • 问题内容: 嘿,我正在建立一个有角度的网页。问题是已经有一些东西没有角度了,我也必须包括它们 问题是这样的。 我的main.html中有这样的内容: 我的partial.html有这样的东西 我的partial.js与angularjs无关。nginclude工作正常,我可以看到html,但根本看不到正在加载的javascript文件。我知道如何使用firebug / chrome-dev-too

  • 问题内容: 什么是检测html加载结束的最佳方法?我想编写一些在加载完成后运行的代码。 问题答案: 有两种方法可以检测何时完成加载,具体取决于您的需要: 1)通过属性- 用于内联表达式。例如: 2)通过事件的是发射-为应用范围的处理。例如: 完成内容加载后