Pra*_*K C 2 javascript jquery angularjs
我使用下面的代码将模板包含在我的主文件中.
<p ng-include=" 'activity.html' "></p>
Run Code Online (Sandbox Code Playgroud)
我的activity.html是这样的,
<script type="text/javascript" src="myjsfile.js"></script>
<p>Activity page contents</p>
Run Code Online (Sandbox Code Playgroud)
但是javascript没有随模板一起加载.
我在SO中发现了一些与此相关的问题,但无法找到可行的解决方案.其中一个答案是在主文件中将angular js加载到angularjs之上,这样脚本标记就会被接受.但没有发现它有效.
Pra*_*K C 12
我在这里找到了这个答案,在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));
Run Code Online (Sandbox Code Playgroud)
和,加载 ngLoadScript 模块作为应用程序依赖:
angular.module('myApp', [
'ngLoadScript'
])
Run Code Online (Sandbox Code Playgroud)
在Partial(**activity.html)中text/javascript-lazy用作标记的type属性值script而不是text/javascript:**
<script type="text/javascript-lazy">
alert("Yup!");
</script>
Run Code Online (Sandbox Code Playgroud)
加载外部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)
}
}
Run Code Online (Sandbox Code Playgroud)
在部分(activity.html):
<script type="text/javascript-lazy">
loadjscssfile("myjsfile.js", "js");
</script>
Run Code Online (Sandbox Code Playgroud)