2015-01-15 43 views
0

我想加載一個基於JS的動態外部JS文件。如何在我的應用程序中動態加載JS文件?

我創建了一個服務做

angular.module('myApp').service('testService', function($http) { 
     var prefix; 
     //codes to determine what prefix is. 
     // It could be http://partnerapp.com/test or http://linkapp.com/test/libs/...etc 
     var url = prefix + '/js/test.js'; 
     return $http({ 
       method: 'GET', 
       url: url 
     }); //load JS file 
}); 

在我的主控制器

angular.module('myApp').controller('myController', function($scope, testService){ 
    //I am not sure how to load those js here. 
}) 

有反正我可以在我的情況下加載它們?非常感謝!

回答

0

喜歡的東西:

angular.module('myApp').controller('myController', function($scope, testService){ 
    testService.then(function(data){ 
     //you can console.log(data) and after maybe eval it ? 
     eval(data);//eval can be harmfull 
    }, function(error){ 

    }); 
}); 
1

我沒有與angular.js多少經驗,但除了eval()函數我只看到一個其他的解決方案的它需要的jQuery(如果你還沒有這樣做了)。我指的是jQuery.getScript(url, callback)

這意味着你必須做這樣的事情:

var url = prefix + '/js/test.js'; 
$.getScript(url); //load JS file and execute script 

回調是可選的,它的腳本加載和解釋後執行。

這是我用過的東西,我可以保證會工作。另一種解決方案是使用src =創建腳本標記並將其附加到頁面的底部。我還沒有測試過它,所以我不是100%肯定它的成功。

+0

我在控制檯中得到414請求URL太大的錯誤。無論如何要解決它? +1 – FlyingCat 2015-01-15 22:29:50

+0

你可以做一個「console.log(url,url.length)」,看看有什麼值嗎?或者在Chrome檢查器的網絡選項卡中,可以檢查URL嗎?你在服務器上使用什麼編程語言,你在什麼地方託管它? – 2015-01-16 08:30:49

相關問題