【问题标题】:Can't make angular app run within meteor templates无法使 Angular 应用程序在流星模板中运行
【发布时间】: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吗?

标签: javascript angularjs meteor iron-router angular-meteor


【解决方案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 ,我没试过,如果没有更多流星的代码和环境设置,很难重现这个
猜你喜欢
  • 2014-12-18
  • 1970-01-01
  • 1970-01-01
  • 2012-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多