代码之家  ›  专栏  ›  技术社区  ›  user3807691

从辅助对象返回对象值(meteor)

  •  1
  • user3807691  · 技术社区  · 8 年前

    我有一个helper函数,它接受一个参数并返回一个对象。

    objectReturnHelper: function(param1) {
       var obj1 = collectionName.findOne(param1).count1;
       var obj2 = collectionName.findOne(param1).count2;;
       return {
            obj1: _.range(0, obj1),
            obj2: _.range(0, obj2)
        };
    }
    

    现在我想分别访问对象的值。这就是我要做的:

    {{#each objectReturnHelper id obj1}}
            <p>TEST</p>
    {{/each}}
    

    但它没有产生任何结果。

    objectReturnHelper: function() {
       var obj1 = 5;
       var obj2 = 10;
       return {
            obj1: _.range(0, obj1),
            obj2: _.range(0, obj2)
        };
    }
    
    
    {{#each objectReturnHelper.obj1}}
            <p>TEST</p>
    {{/each}}
    

    有什么见解吗?

    1 回复  |  直到 8 年前
        1
  •  1
  •   Jankapunkt    8 年前

    #with 适当地 access object context . 在此上下文中,您可以使用在给定范围内为每个项创建一个范围 #each

    {{#with objectReturnHelper id}}
      {{#each this.obj1}}
        <p>Test (1)</p>
      {{/each}}
      {{#each this.obj2}}
        <p>Test (2)</p>
      {{/each}}
    {{/with}}
    

    如果您的助手产生了意外的结果,那么您可以使用非侵入性回退:

    objectReturnHelper: function(param1) {
       var query = collectionName.findOne(param1)
       if (!query) return null
    
       var obj1 = query.count1;
       var obj2 = query.count2;
    
       return {
            obj1: obj1 >= 0 ? _.range(0, obj1) : null,
            obj2: obj1 >= 0 ? _.range(0, obj2) : null,
        };
    }
    

    with 使用 else

    {{#with objectReturnHelper id}}
      {{#each this.obj1}}
        <p>Test (1)</p>
      {{/each}}
      {{#each this.obj2}}
        <p>Test (2)</p>
      {{/each}}
    {{else}}
      <p>No data found</p>
    {{/with}}
    

    其他的 在门内接住 each

    {{#with objectReturnHelper id}}
      {{#each this.obj1}}
        <p>Test (1)</p>
      {{else}}
        <p>No data found</p>
      {{/each}}
      {{#each this.obj2}}
        <p>Test (2)</p>
      {{else}}
        <p>No data found</p>
      {{/each}}
    {{/with}}