Laravel混合和AngularJs

时间:2017-02-27 10:59:00

标签: javascript angularjs laravel webpack laravel-mix

我正在尝试使用运行webpack的Laravel Mix将角度应用程序编译到一个文件中。我收到错误:

  

未捕获的ReferenceError:app未定义

我的webpack.mix.js

const { mix } = require('laravel-mix');

mix.js('resources/assets/js/dependencies.js', 'public/js')
   .sass('resources/assets/sass/app.scss', 'public/css');

我的bundle.js

//load angular
require('angular');

//Load Angular's plugins
require('angular-ui-router');

//Init Angular app
require('./app/app');

//Load angular controllers
require('./app/Controller/aboutController');
....

//Load angular directive
require('./app/Directive/directive');

//Load angular services
require('./app/Services/AccountService');
....

我的app/app.js

var app = angular.module('app', ['ui.router']);

app.config(['$stateProvider', '$urlRouterProvider', '$locationProvider', function ($stateProvider, $urlRouterProvider, $locationProvider) {

$urlRouterProvider.otherwise('/home');

$stateProvider
    .state('home', {
        url: '/home',
        templateUrl: 'app/View/homeView.html',
        controller: 'homeController'
    })
    ...
}]);


app.run(['$state', '$rootScope', function ($state, $rootScope) {
    //APP RUN
}]);

我致电Uncaught ReferenceError: app is not defined时收到app.controller(),例如app/Controller/aboutController.js

app.controller("aboutController", ['$scope', '$rootScope', '$http', function ($scope, $rootScope, $http) {....}

我错过了什么吗?如果我使用html逐个加载所有文件,它可以正常工作。

2 个答案:

答案 0 :(得分:3)

如果您在单独的文件中定义应用程序的控制器,则无法直接使用应用程序,因为没有引用。您首先必须参考该模块。

angular.module('app')
  .controller('aboutController'....

让我知道这是否适合您。

答案 1 :(得分:0)

对于希望为其下一个Laravel项目以更自动化的方式执行此操作的人,我创建了article来说明如何进行。在Laravel 5.4-5.8版本的Angular 4-7版本上进行了测试。希望对您有所帮助!