【问题标题】:How to modify object property before insertion into Blaze template如何在插入 Blaze 模板之前修改对象属性
【发布时间】:2016-05-27 22:28:07
【问题描述】:

假设我有以下 Blaze 模板助手,它可以从集合中获取一些对象:

PackageInCart: function() {
            PackageIds = Carts.findOne({SessionId: SessionID}).Packages;
            var PackageObjects = Packages.find({ _id: { $in : PackageIds } } ).fetch();         
            return PackageObjects;
    },

PackageObjects 变量包含具有特定价格值的“priceperday”属性的对象。在 Blaze 模板中,我可以使用以下方法轻松打印此值:

{{#each PackageInCart}}
 <div class="price">{{priceperday}}</div>
{{/each}}

但是,如果我想在 Helper 函数中修改“priceperday”值,然后再将其打印到模板中,该怎么办?这样做的正确方法是什么?

想到的一个解决方案是创建一个循环遍历对象并执行类似 Object.defineProperty() 的操作以将 priceperday 属性更改为新值。

我想知道是否有使用 Blaze 方法更简单或更快捷的方法来修改使用花括号打印的对象属性。

【问题讨论】:

    标签: meteor meteor-blaze


    【解决方案1】:

    如果您想使用 blaze 执行此操作,您可以使用另一个助手执行此操作。

    weeklyPrice: function(priceperday){
      return priceperday * 7;
    }
    

    会这样称呼

    {{#each PackageInCart}}
      <div class="price">{{weeklyPrice priceperday}}</div>
    {{/each}}
    

    有关空格键帮助器参数in the docs的更多信息

    【讨论】:

    • 谢谢!如果我理解正确,我需要从 PackageInCart 助手中调用新的助手吗?如果是这样,我该怎么做?
    • 啊,我阅读了文档,现在很清楚了。再次感谢您的回答。
    猜你喜欢
    • 2018-08-17
    • 2015-09-22
    • 1970-01-01
    • 1970-01-01
    • 2016-12-07
    • 2017-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多