【问题标题】:How Do I Access an Object's Properties From a Template?如何从模板访问对象的属性?
【发布时间】:2012-05-01 08:38:25
【问题描述】:

根据http://handlebarsjs.com/expressions.html,我应该可以这样做:

<h1>{{article.title}}</h1>

但我似乎无法让它在流星中工作。这是我的模板:

<template name="content">
  {{#if item}}
    <p>{{item.name}}</p>
  {{/if}}
</template>

这是返回项目的 JavaScript:

  Template.content.item = function() {
    return Items.findOne({ _id: Session.get("list_id") });
  };

是的,该项目确实有一个名为 name 的属性 :-)

当我这样做时,我在 Firebug 中看到一个错误,上面写着 ret is undefined

这可以追溯到evaluate.js:

for (var i = 1; i < id.length; i++)
  // XXX error (and/or unknown key) handling
  ret = ret[id[i]];
return ret; 

在出错的那一刻,ret 引用了window 对象。这是怎么回事?

【问题讨论】:

    标签: javascript meteor spacebars


    【解决方案1】:

    你应该使用 {{#with object}}

    如果你的对象是这样的:

    my_object = {
        name : 'my_name',
        prop : 'my_prop'
    }
    

    在你的模板中你可以做:

    <template name="my_template">
        {{#with my_object}}
            <p>Name is {{name}}<p>
            <p>Prop is {{prop}}</p>
        {{/with}}
    </template>
    

    给你:)

    【讨论】:

    • 我将补充一点,使用tryHandlebarsjs.com 站点(粘贴一些 JSON 和您的模板)可能是找出在这种情况下出了什么问题的最快方法之一。然后,您只需专注于您的模板和数据,而没有其他任何可能出错的地方。
    • @Paperwork:再次感谢。我想知道延迟是什么,现在看来我的问题激发了您注册 StackOverflow,所以我想我们今天都做了一件好事 :-)
    • 但是只有当对象的属性为真时,如何使用{{#with object}}?
    猜你喜欢
    • 2016-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-01
    相关资源
    最近更新 更多