0

我正在使用Angular和UI-Router構建單頁Web應用程序。在我的index.html頁面,我現在有這三個要素,一個導航欄指令,一個UI視圖和頁腳指令如下所示:其中包含導航欄指令當使用UI路由器時,html頁面中腳本標籤內部的腳本沒有執行

<body> 
    <div class="container-fluid"> 
     <div class="row"> 
      <cep-navbar></cep-navbar> 
     </div> 

     <ui-view></ui-view> 

     <div class="row"> 
      <cep-footer></cep-footer> 
     </div> 
    </div> 

    <!-- All the bower script dependencies--> 
    <!-- build:js js/lib.js --> 
    <!-- bower:js --> 
    <!-- endbower --> 
    <!-- endbuild --> 

    <!-- All the custom script dependencies--> 
    <!-- build:js js/app.js --> 
    <!-- inject:js --> 
    <!-- endinject --> 
    <!-- inject:template:js --> 
    <!-- endinject --> 
    <!-- endbuild --> 

</body> 

模塊定義了路由如下:

(function() { 
    'use strict'; 

    angular.module('CEPAdmin.base.components') 
     .config(['$stateProvider', routeConfig]); 

    function routeConfig($stateProvider) { 
     $stateProvider.state('search', { 
      url: '/search', 
      templateUrl: 'src/app/pages/search/search.html', 
      controller: 'SearchController' 
     }); 
    } 
})(); 

我通過點擊navbar指令中的一個鏈接,在index.html頁面的ui-view中注入search.html頁面來加載搜索狀態。但問題是腳本標記內的腳本從不執行。這是我的search.html頁面。

<script type="text/javascript"> 
     console.log('Test me'); 
     window.alert('Test me bro'); 
</script> 
<h1>Hello World!!</h1> 

爲什麼在search.html頁面腳本標籤內的腳本沒有得到每當我的搜索狀態加載執行?

鏈接一擲:https://plnkr.co/edit/RaX5Jsd5zqAfbwGE0i8o

+0

您是否考慮過在您的SearchController中運行腳本,而不是在模板中內聯它? 'function SearchController($ scope){ alert(「hi」); ...' –

+0

@Oliver Barnwell它將從控制器工作。但我的要求是我想從部分視圖中引用第三方腳本文件。 –

+0

如同,包含一個外部JS文件?如果是這樣,爲什麼不在頁面首次加載時加載第三方腳本文件,而不是在用戶導航您的網站時在腳本文件中加載? –

回答

0

經進一步調查,我才知道的jQuery的是精簡版本的角度用途(jQLite)有一些DOM限制,防止其從局部視圖執行一個腳本文件。

解決方案

參考在index.html中引用角前的jQuery腳本。這使角度使用jQuery而不是jQlite。只是這樣做解決了我的問題。