无法使 Angular 应用程序在流星模板中运行
Posted
技术标签:
【中文标题】无法使 Angular 应用程序在流星模板中运行【英文标题】:Can't make angular app run within meteor templates 【发布时间】:2016-01-07 03:01:52 【问题描述】:无法让 Angular 应用在流星模板中运行
这是我的 index.html
<body>
</body>
<template name="myIndex">
<section ng-app="myApp" ng-controller="AppController as app">
<div ng-include="'client/index.ng.html'"></div>
</section>
</template>
这是我的 index.js
MyIndexRouteController = PreloadController.extend(
'preload':
'async': ['/js/xxx.js']
,
);
Router.route('/',
template: 'myIndex',
data:
env: 'someEnv',
assets: ''
,
controller: MyIndexRouteController,
);
在路由规则执行并且模板出现在呈现的 HTML 中之后,没有启动 Angular 指令,也没有启动 ng-app
,也没有启动 ng-include
。
如何解决?
【问题讨论】:
你在哪里初始化你的应用myApp
?
在client/ngApp/app.js
你能创建一个基本的jsfiddle吗?
【参考方案1】:
试试这个https://docs.angularjs.org/api/ng/function/angular.bootstrap 手动启动角度,在流星模板渲染后ю
当有 ng-app 指令时,Angular 会自动启动,但在这种情况下,该指令是其他模板系统的模板。
【讨论】:
对不起,那忘了提,但我在询问之前尝试了这种方法。我认为 Iron-router 有问题【参考方案2】:可能需要在模板添加到 DOM 后手动初始化 Angular 应用程序。
查看meteor-preloader的文档,可以使用以下sn-p实现:
MyIndexRouteController = PreloadController.extend(
'onAfterAsync' : function()
//angular.element(document).ready(function()
angular.module('myApp', []);
angular.bootstrap(document, ['myApp']);
//);
,
'preload':
'async': ['/js/xxx.js']
,
);
【讨论】:
你尝试过还是只是理论上?我试过 put 没有成功(也许我犯了一些错误,这就是为什么我想知道你是否尝试) @peka ,我没试过,如果没有更多流星的代码和环境设置,很难重现这个以上是关于无法使 Angular 应用程序在流星模板中运行的主要内容,如果未能解决你的问题,请参考以下文章