【AngularJS+RequireJS】(筆记)自动加载控制器

/**
 * モジュール生成、構成
 */
define(['angular', 'jquery'], function() {
    // AngularJS起動
    var module = angular.module('SampleApp', []);

    return module;
});
/**
 * SampleController
 */
define(['angular', 'jquery', 'app'], function(ng, jq, module) {

    module.controller('SampleController', function($scope) {
        $scope.hoge = "Hoge";
        $scope.foo  = "foo";
    });
});
/**
 * RequireJS 設定
 */
require.config({
    baseUrl: '../',
    paths: {
        // モジュール
        angular: 'bower_components/angular/angular.min',
        jquery:  'bower_components/jquery/dist/jquery.min',

        // アプリケーション
        app: 'app/app',
        SampleController: 'app/controllers/SampleController',
    },
    shim: {
        // モジュール
        jquery: {deps: ["angular"]},

        // アプリケーション
        app: {deps: ["angular", "jquery"]},
        MasterDetailController: {deps: ["app"]},
    },
});

/**
 * ロード処理
 */
require(['angular', 'jquery'], function() {
    // 各モジュールをロード、DOMのロード完了後に…
    $(function() {
        // ng-ontrollerの属性値(コントローラ名)を取得する
        var controllerName = $('[ng-controller]').attr('ng-controller');
        // コントローラ名に該当するjsファイルをロード
        require(['app', controllerName], function(module){
            // モジュールの紐付け(※RequireJSではngAppだとタイミングが間に合わない)
            angular.bootstrap(document, ['SampleApp']);
        });
    });
});
广告
将在 10 秒后关闭
bannerAds