我如何为我的laravel应用重构我的角度代码,所以我将控制器放在单独的文件中?

时间:2015-06-19 09:53:04

标签: angularjs laravel-4

我希望代码尽可能结构化,现在我的所有控制器和路由都保存在同一个文件中。我正在使用laravel 4.2作为后端,并为应用程序的前端部分使用模板和角度。

这就是角度脚本现在的样子:

var Application = angular.module('ReporterApplication', ['ngRoute', 'ui.select', 'ngSanitize'], function($interpolateProvider) {
    $interpolateProvider.startSymbol('<%');
    $interpolateProvider.endSymbol('%>');
});

Application.config(function($routeProvider) {

    $routeProvider
        .when('/packing/scan.html', {
            templateUrl: 'packing/scan.html',
            controller: 'PackingScanController'
        })

        [ .... ]

});

Application.controller('BootstrapController', ['$scope', function($scope) {
    [ ... ]

}]);


Application.controller('OrdersTrackerController', ['$scope', '$http', function($scope, $http) {

    [ ... ]

}]);

在Bootstrap.blade.php中,我有应用程序的基础,我使用一个角度视图来生成内容。我试图使用刀片来包含所需的js文件,其中包含模块的控制器但是会破坏角度

像这样:

Scan.blade.php

@head
{{ HTML::script('/src/Packing/Scan.js') }}
@stop

php and angular html code here

1 个答案:

答案 0 :(得分:1)

您可以创建一个额外的模块,例如:

angular.module('ReporterApp.Controllers', [ /* dependencies here */])

然后你可以做.controller(......等......)。然后将此模块注入“main”模块。这样,您可以在ReporterApp.Controllers模块中拥有包含不同控制器的不同文件。

一个简单的例子:

文件1:

angular.module('ReporterApp.Controllers')
    .controller('myCtrl', ['$scope', function($scope) {
       /* code here */
    }]);

文件2:

angular.module('ReporterApp.Controllers')
    .controller('mySecondCtrl', ['$scope', function($scope) {
         /* code here */
    }]);

然后是一个模块文件(对于额外的结构位,例如,如果你有其他文件,你需要在一个单独的模块中的服务)modules.js:

angular.module('ReporterApp.Controllers', [ /*dependencies here */ ]);
angular.module('ReporterApp.Services', [ /* dependencies here */]);

最后你的主app.js:

var myApp = angular.module('ReporterApplication', 
    ['ReporterApp.Controllers', 'ReporterApp.Services']);

为了使其正常工作,尽管包括很多事情的顺序。确保首先包含module.js文件,以便创建模块,然后创建包含控制器的文件,然后是服务,最后是app.js!