【问题标题】:How should I lay my model in ember in case of this hasMany relations?如果有这种 hasMany 关系,我应该如何将模型放置在 ember 中?
【发布时间】:2013-12-16 02:03:18
【问题描述】:

我从服务器发送的 JSON 是这样的,

{"selectFill":{"user":[{"userId":"Gru","department":"Villain"},{"userId":"Sulley","department":"Scare"},{"userId":"Popeye","department":"Sailer"}]}}

我的模型看起来像这样,

    App.SelectFill = DS.Model.extend({
    users: DS.hasMany('user',{
        embedded: true
    })
});

App.User = DS.Model.extend({
    userId: DS.attr('string'),
    department: DS.attr('department')
});

App.SelectFillSerializer = DS.WebAPISerializer.extend({
    extractArray: function (store, type, payload, id, requestType) {

        var primaryTypeName = type.typeKey;

        var typeName = primaryTypeName,
            type = store.modelFor(typeName);

        var selectFill = [];
        selectFill.push(payload.selectFill);
        var newi = {};
        newi[typeName] = selectFill;

        return this._super(store, type, newi, id, requestType);
    }
});

我在 Chrome 调试器中使用 ember 检查器检查了代码,我可以在 SelectFill 中看到 1 条记录,但它是空的。用户记录也是空的。 你能告诉我,我在这里做错了什么吗?我是 Ember 的新手,我试图进入 Ember 源代码和我的头,我的头开始旋转。大家是不是也通过深入 Ember 源代码来调试自己的代码?

【问题讨论】:

    标签: javascript jquery model-view-controller ember.js


    【解决方案1】:

    您需要将数据转换为这种格式,并且您需要所有记录上的 id(如果您希望 userId 成为用户的 id,请将其从模型定义中删除并添加到适配器中)

    {
      "selectFill":
        {
          id:'something',
          "users":['Gru', 'Sulley','Popeye']
        },
      "users":[
        {"userId":"Gru","department":"Villain"},
        {"userId":"Sulley","department":"Scare"},
        {"userId":"Popeye","department":"Sailer"}]
      }
    
    App.UserAdapter = DS....extend({
    
       primaryKey: 'userId'
    });
    

    https://github.com/emberjs/data/blob/master/TRANSITION.md

    【讨论】:

    • 谢谢@kingpin2k,确实有效!!!我只是修改我的 extractarray 以满足要求...
    猜你喜欢
    • 2015-09-25
    • 1970-01-01
    • 1970-01-01
    • 2012-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多