【问题标题】:Meteor helpers not available in Angular templateMeteor 助手在 Angular 模板中不可用
【发布时间】:2015-10-13 16:21:39
【问题描述】:

我正在学习Meteor,我正在尝试使用tap:18n 包添加国际化支持。不幸的是,模板帮助函数 _ 在 Angular 模块中不可用。例如

<div>{{_ "foo"}}</div>

有效,但在模块模板中使用时无效:

> 索引.html

<div ng-app="app" ng-include="'foo.ng.html'">

> foo.ng.html

<div ng-app="bar">
  <div>{{_ "bar"}}</div>
</div>

注意: appfoo.js 内声明为 angular.module('app', ['angular-meteor']);,在项目根级别。

是否可以在 Angular 模块中提供帮助程序?

(注意:参见引用的issue。)

** 编辑 **

尝试在另一个模板中渲染 package templates 时也会发生同样的情况:

> 索引.html

<section ng-app="users"
         ng-include="'users/usersession.ng.html'">
</section>

> 用户/usersession.ng.html

<ul class="nav navbar-nav navbar-right">
  {{> loginButtons}} <!-- here -->
</ul>

然后我得到Syntax Error: Token '&gt;' not a primary expression at column 1 of the expression [&gt; loginButtons] starting at [&gt; loginButtons]

注意:模块users 已定义,没有{{&gt; loginButtons}} 表达式一切正常。

【问题讨论】:

    标签: javascript angularjs meteor meteor-helper


    【解决方案1】:

    您可以使用meteor templates inside angular。尝试类似:

    <meteor-include src="myTemplate"></meteor-include>
    

    你的模板应该是这样的:

    <template name="myTemplate">
        <div>{{_ "foo"}}</div>
    </template>
    

    请记住,命名 .html 文件时,角度模板将是 name.ng.html,而流星模板将只是 name.html

    【讨论】:

    • 所以....我不应该使用ng-include,那么?因为我所有的模板都将使用助手。我对这个答案的疑问是:“如果流星模板在 Angular 模板中可用,那么为什么不提供帮助器呢???”这对我来说毫无意义。
    • 因为 Uri 可能不想/没有时间将所有助手添加到 angular-meteor。更快的方法是添加meteor-include,这样你就可以添加你需要的所有流星模板。我正在构建一个完整的内容管理系统,包括一个论坛,我只有一个用于流星降价的模板。我把它放到了一个角度指令中,所以我只需要在需要使用它时编写角度。
    • 其中一些助手是第三方包助手(如tap:i18n_ 助手),还有一些是需要&gt; 助手的其他包模板。底线是,虽然您提供 a 解决方案来解决此问题,但这对我来说是“不可接受的”,并且并没有真正解释为什么这些帮助器在 Angular 包含中不可用。
    • 它们在 Angular 包含中不可用,因为 Angular 正在处理它而不是 Blaze。 Angular 不知道如何处理它。
    • 所以,简而言之,Blaze 和 Angular 具有相似的视图引擎语法;两者都有独立的助手?我对这两个世界都很陌生,这很令人困惑。
    猜你喜欢
    • 2015-01-06
    • 1970-01-01
    • 1970-01-01
    • 2015-09-20
    • 2014-06-20
    • 2013-02-14
    • 2016-05-26
    • 1970-01-01
    • 2015-01-26
    相关资源
    最近更新 更多