动态细分不在ember中工作

时间:2013-07-25 21:12:31

标签: ember.js ember-data

Possible Duplicate

我的代码很简单,我的HTML:

<script type="text/x-handlebars" data-template-name="sites">
<ul>
    {{#each controller}}
    <li>
        {{#linkTo 'sites.index' site}} {{siteName}} {{/linkTo}}
    </li>
    {{/each}}
</ul>
</script>

我的Ember代码:

    WebApp.Router.map(function () {
    this.resource('sites', { path: '/' } , function() {
        this.route('index', { path: '/:site_id' })
    });
});


//returns all Sites to display
WebApp.SitesRoute = Ember.Route.extend({
    model: function () {
        return WebApp.Site.find();
    }
});



 WebApp.Site = DS.Model.extend({
      id: DS.attr('integer')
 });


WebApp.Site.FIXTURES = [
{
    id: 1,
    siteName: gff1.com
},
{        
    id: 2,
    siteName: gff2.com
},
{
    id: 3,
    siteName: gff3.com
}
];

我想列出一个链接到/sites/index/<ID>的网站列表 当我运行此代码时,我得到Assertion failed: Cannot call get with 'id' on an undefined object. 我做错了什么?

1 个答案:

答案 0 :(得分:1)

这里有一些问题。可以在http://jsbin.com/ikozuv/1/edit

找到工作版本

问题的原因在于您的模板,当您尝试链接时,您没有定义网站。这应该解决这个问题

{{#each site in controller}}
<li>
    {{#linkTo 'sites.index' site}} {{site.siteName}} {{/linkTo}}
</li>
{{/each}}

注意:上述内容仍然不是首选方法,请参见下文。

其他问题包括不将siteName列为WebApp.Site的属性,在模型声明中设置ID,而您期望的/sites/index/<ID>的URL与路由器定义的不完全相同事情是这样的。建议的方法是将路由器配置为:

WebApp.Router.map(function () {
    this.resource('sites', { path: '/' } , function() {
        this.resource('site', { path: ':site_id' });
    });
});