5

Angular-Meteor アプリケーションが動作しています。Angular テンプレートと関連するコントローラーを Meteor パッケージにパッケージ化し、そのパッケージを追加してこれらのテンプレートをメイン アプリケーションに挿入したいと考えています。

ベストアプローチとは?

2015 年 8 月 26 日の更新 - 以下に記載されているテンプレートを追加する方法を見つけました。しかし、Meteor パッケージでテンプレートの Angular コントローラーをベース アプリケーションに挿入するにはどうすればよいでしょうか?

重要な連携は、Angular UI-router です。

packageprefix:packagenameという名前のパッケージを含む基本アプリケーションがあります。このパッケージ内には、パッケージ フォルダーのルートにコードがあります。 myPackagedPage.ng.html - Angular HTML テンプレート myPackagedPage.js - 関連する Angular コントローラー

メイン アプリケーションから、次のように Angular テンプレートへのルートを作成してみました。

angular.module('parentModule',[
    'angular-meteor',
    'ui.router',
    'angularify.semantic.sidebar'
])

.config(['$urlRouterProvider', '$stateProvider', '$locationProvider',
function($urlRouterProvider, $stateProvider, $locationProvider){
    console.log("app.js config!");
    $locationProvider.html5Mode(true);

    $stateProvider
        .state('home', {
            url: '/',
            templateUrl: 'client/views/home/home.ng.html',
            controller: 'HomeCtrl'
        })

        .state('myPackagedPage', {
            url: '/myPackagedPage',
            templateUrl: 'packageprefix_packagename/myPackagedPage.ng.html',
            controller: 'MyPackagedPageCtrl'
        })
    ;

    $urlRouterProvider.otherwise('/');

}])

アプリケーションは myPackagedPage.ng.html ファイルを正常に検出し、レンダリングします。しかし、コントローラーを追加する方法は?

これをパッケージに追加しようとしましたが、コントローラー関数が呼び出されません。

console.log("myPackagedPage.js loaded");
angular.module('parentModule')

.controller('MyPackagedPageCtrl', ['$scope',
    function($scope){
        console.log("MyPackagedPageCtrl");
    }])
;

エラーが発生します:

Argument 'MyPackagedPageCtrl' is not a function, got undefined
4

1 に答える 1