Meteor 是不是支持嵌套助手(子表达式)?
Posted
技术标签:
【中文标题】Meteor 是不是支持嵌套助手(子表达式)?【英文标题】:Are nested helpers (subexpressions) supported in Meteor?Meteor 是否支持嵌套助手(子表达式)? 【发布时间】:2014-07-03 19:17:27 【问题描述】:我会用这个:http://handlebarsjs.com/expressions.html#subexpressions
outer-helper (inner-helper 'abc') 'def'
但是流星给我一个错误...有一些使用嵌套助手的解决方案或解决方法吗?
谢谢!
【问题讨论】:
【参考方案1】:我认为这部分文档:http://docs.meteor.com/#ui_registerhelper,这部分 http://docs.meteor.com/#template_helpers 应该回答您的问题。
此外,流星模板语言称为 spacebars,虽然受到 handlebars 的启发,但它有一些不同之处,更多内容请阅读此处:https://github.com/meteor/meteor/blob/devel/packages/spacebars/README.md
这会给我们:
// template
<template name="_maybeDiv_wrapInDiv">
<div>
> UI.contentBlock
</div>
</template>
<template name="_maybeDiv_noop">
> UI.contentBlock
</template>
// client code
UI.registerHelper('maybeDiv', function ()
var isBlock = this.valueOf();
if (isBlock)
return Template._maybeDiv_wrapInDiv;
else
return Template._maybeDiv_noop;
);
你可以像这样使用它
#maybeDiv true
contents
/maybeDiv
【讨论】:
对不起,但我不明白我的问题的答案在哪里......是否可能,嵌套助手调用,就像在 Handlebar 中一样?以及如何? mhhh...以及像 outer-helper (inner-helper 'abc') 'def' 这样的嵌套助手(子表达式)在哪里? 如果这回答了这个问题,那么它的解释工作就很糟糕。我看不到那里的嵌套助手。如果可以的话,我会对此投反对票。#maybeDiv true contents /maybeDiv
用另一个助手替换内容,你有嵌套助手。
我不明白。似乎是hackish。【参考方案2】:
嵌套助手:如果有一个位置参数后跟其他(位置或关键字参数),则使用正常的助手参数调用约定在其他参数上调用第一个参数。
将 helperB 传递给 helperA
helperA helperB
将 'helperB with argument x' 传递给 helperA
helperA helperB x
将带有参数 x=false 的“helperB”传递给 helperA
helperA helperB x=false
空格键包含和块参数
https://github.com/meteor/meteor/blob/devel/packages/spacebars/README.md#inclusion-and-block-arguments
【讨论】:
如果我想将一个参数传递给 helprA 并将一个参数传递给 helperB(参见我上面的示例) 那么块辅助语法将更加明确和可维护#outer-helper def inner-helper abc /outer-helper
另一个例子<button type="submit" class="btn btn-primary "> #spinnerIf processing#if addModeAddelseEdit/if/spinnerIf </button>
能回答你的问题吗?
我的问题真的很老了……我记不太清了。顺便说一句,您使用块助手而不是简单的助手来允许嵌套调用。这不一样......例如,我只能将一个参数传递给块助手。
据我所知(handlebarsjs.com/expressions.html#subexpressions)对于流星来说是不可能的【参考方案3】:
现在 1.2 版可以实现这一点
<p>
Together we have
pluralize (add myWidgetCount yourWidgetCount), "widget"
</p>
https://quip.com/RXFlAk9Rc2xI#dbfACAYxaJX
【讨论】:
以上是关于Meteor 是不是支持嵌套助手(子表达式)?的主要内容,如果未能解决你的问题,请参考以下文章
notepad++ 正则表达式引擎 (scintilla) 是不是支持子字符串转义(smth. like "\Q.*[escaped string]()+\E")?
不使用 EXISTS 嵌套 case 语句引入子查询时,选择列表中只能指定一个表达式