获取和显示分层数据

时间:2013-01-27 00:21:44

标签: ember.js ember-data

我在使用ember-data建模层次结构并设置正确的路由(revison 11,ember 1.0.0-pre4)时遇到问题

我的模型基本上是Forum,具有深层次结构(RootForum - > SubForum - > SubSubForum [...])。

我的路线

/**
 * Setup routes
 */
App.Router.map(function () {
    this.resource('forums');
    this.resource('node', {path: 'node/:node_id'});
});
  • forums将列出所有根论坛
  • node将列出特定节点的所有论坛(论坛的子论坛)

我的模特

App.Node = DS.Model.extend({
    name: attr('string'),
    forums: DS.hasMany('App.Forum')
});

App.Forum = DS.Model.extend({
    name: attr('string'),
    node: DS.belongsTo('App.Node')
});

和我的路线定义

// Only defined Forums Route because we will query for all Forums that have an empty (root) path
App.ForumsRoute = Ember.Route.extend({
    model: function() {
        return App.Forum.find({path: ""});
    }
});

服务器响应(JSON数据)

GET /forums

{"node": {
    "id": "root",
    "name": "root",
    "forums": ["Europe", "Africa"]
}, "forums": [
    {
        "name": "Europa",
        "node_id": "root",
        "id": "Europe"
    },
    {
        "name": "Afrika",
        "node_id": "root",
        "id": "Africa"
    }
]}

GET /node/Europe

{"node": {
    "name": "Europa",
    "forums": ["Europe_Germany", "Europe_France"]
}, "forums": [
    {
        "name": "Deutschland",
        "node_id": "Europe",
        "id": "Europe_Germany"
    },
    {
        "name": "Frankreich",
        "node_id": "Europe",
        "id": "Europe_France"
    }
]}

问题

我现在遇到问题,在我的模板中使用node帮助程序以编程方式触发#linkTo路径:

    <script type="text/x-handlebars" data-template-name="forums">
     <table>
        {{#each forum in controller}}
        <tr>
            <td>{{#linkTo "node" forum}} {{forum.name}} {{/linkTo}}</td>
        </tr>
        {{/each}}
     </table>
    </script>

如果我点击生成的链接,我就成功收到了/#/node/Europe的浏览器哈希更改事件,但没有请求我的服务器来获取此论坛子节点。但是:如果我刷新浏览器,它会成功拨打电话。

这让我想到了这个问题,ember或许会想到“我已经有了这个论坛,所以我不需要再次获取它”。但是:对我而言,它更像是一个查询,而不是一个论坛元素的获取。有没有机会在没有“hacky”方法的情况下在ember中建模我的用例?

0 个答案:

没有答案