2017-03-09 28 views
0

我嘗試編譯HTML模板與<script>..</script>裏面的文件內的表達式,但AngularJS的編譯器不<script>標籤中編譯所有表達式。AngularJS不會編譯腳本標籤

我的控制器:

.controller('showChannelController', function ($scope, $http, $stateParams, $compile, $templateRequest) { 
     $http.get("http://localhost/show?id=" + $stateParams.id) 
      .then(function (response) { 
       $scope.info = response.data.data; 
       $templateRequest('application/script.html').then(function(template) { 
        $('body').append($compile(template)($scope)); 
       }); 
      }); 
    }); 

而且我application/script.html模板的樣子:

<script> 
$(function() { 
     // Load Player 
     var player = new Clappr.Player({ 
      source: "{{source_url}}", 
      parentId: "#player", 
      autoPlay: true, 
      width: 962, 
      height: 540, 
     }); 
}); 
</script> 

是否有可能解決這個問題,而不包括後端?

+0

如果腳本在ng-view中,你應該在你的index.html文件中調用AngularJS之前的Jquery。順便說一句,這必須是重複的 – Alburkerk

+0

該腳本位於'application/script.html'。你可以給我一個例子嗎? –

+0

您將能夠在與jQuery招模板來執行

1

實現後端版本,只需在服務器端生成具有所有必需參數的腳本並將完整腳本傳輸到AngularJS。然後在AngularJS控制器中應用收到的數據。

$('body').append($compile(response.data.script)($scope)); 
1

不使用括號。使用變量。 它應該直接工作。 使用$ rootScope來傳遞變量的值。這裏使用$ rootScope,因爲它在所有應用程序中都很常見。

這裏是例子。

angular.module('tss.application').controller('VideoController',function($log, $rootScope, $scope, $window) { 

    var player = new Clappr.Player({ 
            source: $rootScope.vp, 
            parentId: "#player", 
            autoPlay: true 
            }); 

}); 

我在video_modal.html中使用這個控制器---這是一個彈出式模式,在這個模式下玩家打開。根據用戶的點擊/選擇,視頻的來源是動態的。

<div ng-controller="VideoController"> 
    <div id="player"></div> 
</div>