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