晚上在看angular時候,遇到了一個問題
問題描述:
index.html
<!DOCTYPE html><html ng-app='a'><head></head><body ng-controller='first'><div>hello</div><div ng-include=b.html></div><script type="text/javaScript" src='https://code.angularjs.org/1.5.10/angular.min.js'></script><script type="text/Javascript" src="/public/javascripts/news_app.js"></script></body></html>b.html
<!DOCTYPE html><html ng-app='a'><head></head><body ng-controller='first'><div>hahaha</div><script style='text/javascript' src='c.js'></script><script type="text/JavaScript" src='https://code.angularjs.org/1.5.10/angular.min.js'></script><script type="text/JavaScript" src="/public/javascripts/news_app.js"></script></body></html>news_app.js
var NewsPub=angular.module('a',[]);NewsPub.controller('first',['$scope','$http','$window',function($scope,$http,$window){ });你會發現,c.js根本沒有被調用?。。。?!
我以為自己哪里因為粗心寫錯了變量,然后找了好半天自己變量問題,郁悶。。。。
后來我就各種百度,哈哈哈,原來這是angular的某種機制,最終發現有個人在stack上找到了解決方法,現在歸納使用如下:
在news_app.js加入如下代碼
news_app.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 s = document.createElement("script"); s.type = "text/javascript"; var src = elem.attr('src'); if(src!==undefined) { s.src = src; } else { var code = elem.text(); s.text = code; } document.head.appendChild(s); elem.remove(); } } };});}(angular));var NewsPub=angular.module('a',['ngLoadScript']);NewsPub.controller('first',['$scope','$http','$window',function($scope,$http,$window){ });問題解決~~~~~~~~~
新聞熱點
疑難解答