Meteor:车把能够结合#if 和#with?

Meteor: Handlebars able to combine #if and #with?

目前,我正在从第三方数据库中提取信息,模板使用该数据。

<template name="dogTypeData">
  {{#if userOwnsDog typeOfDog}}
    {{#with userOwnsDog typeOfDog}}
      // populate info here with user's dog
    {{/with}}
  {{else}}
    You do not own this kind of dog yet!
  {{/else}}
  {{/if}}
</template>

帮主看看主人是否养过这种狗:

Template.dogTypeData.helpers({
  userOwnsDog: function(typeOfDog){
    return OwnedDogs.findOne({
      type: typeOfDog
    });
  }
});

我很好奇是否有办法合并 #if#with 语句,或者是否有必要这样做。为了代码简单,只调用 userOwnsDog(typeOfDog) 一次而不是两次。比如,是否有 {{#ifwith}} 类型的语句?

谢谢!

您可以将它们组合起来,因为这里不需要开头的 if。同样的模板可以改写成这样:

<template name="dogTypeData">
  {{#with userOwnsDog typeOfDog}}
    // populate info here with user's dog
  {{else}}
    You do not own this kind of dog yet!
  {{/with}}
</template>

另见 this section from Understanding Spacebars