如何在模板中使用模型数据?

时间:2013-09-01 11:11:25

标签: ember.js handlebars.js ember-model

我使用FIXTURES创建了ember-model,我尝试在模板上访问它,但如果我使用{{model.name}}则没有显示任何结果。它与each助手一起工作正常。

我希望在不使用任何{{model.name}}帮助程序的情况下访问each等模型的单个节点。

我的型号代码:

Astcart.Home.FIXTURES=[
    {
        "id": "1",
        "logo_url": "img/logo.jpg",
        "name": "gau",
        "list": [
            {
                "id": "1",
                "name": "amit"
            },
            {
                "id": "2",
                "name": "amit1"
            }
        ]
    }
];

我的路由器代码:

  Astcart.HomeRoute = Ember.Route.extend({
    model: function() {
      return Astcart.Home.find();
    }
  });  

我的模板:

<script type="text/x-handlebars" data-template-name="home"> 

    {{model.name}}

    <ul>
        {{#each item in model}}                                         
            <img  {{bindAttr src="item.logo_url"}}></img>               
            <li>{{item.name}}</li>
            {{#each item in item.list}} 
                <li>{{item.name}}</li>
            {{/each}}               
        {{/each}}
    </ul>
</script>

我已更新了我的代码here

1 个答案:

答案 0 :(得分:1)

首先,您需要将模板名称更改为index或路径更改为Astcart.ApplicationRoute,因为模板名称和路径名称必须匹配。

目前的配置:

路线

Astcart.IndexRoute

模板

<script type="text/x-handlebars" data-template-name="application">

不起作用。

没有参数的find()会执行find all data,这将始终返回一个数组。

如果您想要单个数据,可以执行以下选项之一:

1-在find方法中传递id,但您需要知道id:

Astcart.Home.find(1);

这将返回单个对象,然后您可以使用{{model.name}}{{name}}(因为模板的上下文是model),而没有each视图助手。

2-获取数组的第一个对象:

{{#with model.firstObject as item}}
    <img  {{bindAttr src="item.logo_url"}}></img>               
    {{item.name}}
{{/with}}

我希望它有所帮助