2017-05-06 53 views
1

我使用Laravel 5.4mix工具來構建,並結合我AngularJS 1文件。這裏是我的webpack.mix.js爲Laravel:如何使用laravel mix(webpack)在全局範圍中顯示js變量?

mix.js('resources/assets/js/app.js', 'public/js/app.js'); 
mix.combine('resources/assets/js/directives/*', 'public/js/directives.js'); 

這裏是應用程序認定中:

'use strict'; 

var myApp = angular.module('myApp', [ 
    'ngRoute', 
    //... 
]); 

,這裏是一個指令

myApp.directive('navigation', function() { 
    return { 
     templateUrl: 'app/modules/layouts/nav.html', 
     replace: true 
    }; 
}); 

問題是,當我建立的文件,包括他們HTML我得到的錯誤

ReferenceError: myApp is not defined 

從編譯diretives.js文件。

我弄清楚,作爲mix使用webpack的編譯和webpack封裝每個js的一個匿名函數文件的內容,所以我myApp變量只是在編譯app.js文件訪問,而不是在全球範圍內。當我手動刪除編譯app.js文件的匿名函數,它工作得很好。

所以我想知道是否有一種方法,使myApp變量全局訪問雖然Laravelmix配置?

+0

雖然正確的方法是註冊各種角度成分到模塊使用'angular.module(「對myApp」)'作爲吸氣劑。從來沒有污染全局命名空間.. –

+0

可以請您詳細闡述@pankajparkar –

+1

見Laravel是如何做的在其啓動代碼:https://github.com/laravel/laravel/blob/v5.4.21/resources/assets/js/bootstrap。 js(像'window._ = require('lodash')');') – ceejayoz

回答

0

你有沒有在襯裏的myapp功能HTML腳本認爲標籤而不是在一個單獨的js文件?

+0

我知道它可以工作和工作,但我試圖弄清楚如何通過'laravel-mix'完成這個工作,也就是'webpack ' –