不能让angular应用在流星模板中运行

Can't make angular app run within meteor templates

本文关键字:运行 流星 angular 应用 不能      更新时间:2023-09-26

不能让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-appng-include也不会启动。

如何解决这个问题?

尝试此https://docs.angularjs.org/api/ng/function/angular.bootstrap手动启动angular,在流星模板被渲染后

当有ng-app指令时,Angular会自动启动,但在这种情况下,该指令是其他模板系统的模板。

也许angular应用需要在模板被添加到DOM后手动初始化。

查看meteor-preloader的文档,可以使用以下代码片段实现:

MyIndexRouteController = PreloadController.extend({
    'onAfterAsync' : function() {
        //angular.element(document).ready(function() {
          angular.module('myApp', []);
          angular.bootstrap(document, ['myApp']);
        //});
    },
    'preload': {
        'async': ['/js/xxx.js']
     },
});