我有一個簡單的例子,試圖找出爲什麼我的角度部分模板不能加載另一個JavaScript組件。我使用1個模板(singleArticleView.html)和一個父頁面(blog.html),我試圖將run_prettify.js應用到我的模板中的一個簡單的代碼片段。如果代碼位於模板內部,則不起作用。如果我從子模板中刪除代碼和腳本標記並將它們包含在父代中,它將正常工作如何在AngularJS部分模板中包含第三方JavaScript庫?
如何在模板中執行該JavaScript庫?我認爲它不工作,因爲DOM元素稍後加載。
我怎樣才能評估是否在局部模板內容,以便執行任何外部的JavaScript代碼來操作DOM已經提供?
我明白任何建議
據的代碼:
blog.html(父)
<script src="~/AngularJS/Controllers/articlesController.js"></script>
<script src="~/AngularJS/Controllers/singleArticleController.js"></script>
<div class="row">
<div class="col-md-8 col-md-offset-1">
<div data-ng-view>
</div>
</div>
</div>
singleArticleView.html(模板)
<script src="~/Scripts/run_prettify.js"></script>
<link href="~/Content/prettify.css" rel="stylesheet" />
<div>
{{article.author }}
<pre class="prettyprint linenums lang-html">
<!DOCTYPE html>
<html>
<head>
<title>Demo | Prettify.JS</title>
</head>
<body>
<h1>Hello, World!</h1>
</body>
</html>
</pre>
</div>
singleArticleControlle .js(控制器)
(function() {
var app = angular.module("dbayonaCode");
var singleArticleController = function ($scope, dataService, $window, $routeParams, $sce) {
$scope.article = {};
$scope.newComment = {};
//Get the article with its comments to show in the template and add a new comment
//It uses ArticlesController.cs
dataService.getArticleById($routeParams.id)
.then(function (data) {
//success
$scope.article = data;
$scope.myContent = $sce.trustAsHtml(data.body);
},
function() {
//error
$windows.location = "#/";
});
}
app.controller("singleArticleController", singleArticleController);
}());
我不使用ngInclude,我使用的是ng-view。不過,我已經創建了具有該內容的js文件,並在我將該控制器分配給該模板之後調用該文件。我猜這個名字「ngLoadScript」的名字是「var app = ng.module('ngLoadScript',[]);」是我的模塊的名稱。我不知道他們在其他鏈接中究竟是什麼意思,「將ngLoadScript模塊作爲應用程序依賴項加載」。 ,無論如何,我可以看到客戶端使用'lazy-loading'標籤獲取js文件,現在我得到一個控制檯錯誤:「未捕獲的錯誤:無法在同一幀中兩次加載XRegExp」:( –
在調度程序中,我使用ng-transcode和ng-view。 – tpie
您能否給我發送鏈接到plunker示例。謝謝 –