我有一个 Angular-Meteor 应用程序正在工作。我想将 Angular 模板和关联的控制器打包到 Meteor 包中,并通过添加该包将这些模板注入我的主应用程序。
什么是最好的方法?
2015-08-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