如何使用store.createRecord手动创建新记录时应用自定义转换

时间:2013-12-19 19:05:23

标签: ember.js ember-data

我有一个使用自定义转换之一的模型,如:

App.Question = DS.Model.extend({
    questionName: DS.attr('string'),
    attributes: DS.attr('myCustomTransform')    
});

现在我想创建一个问题记录,如:

var newQuestion = store.createRecord('question', {"questionName":"abc", "attributes":{....}});

它会创建一条记录,但不会将自定义转换应用于已加载的记录(或属性)。知道如何在手动创建记录时应用转换吗?

谢谢, DEE

* 更新:工作解决方案*

我的模型看起来像这样:

AS.Question = DS.Model.extend({
    questionName: DS.attr('string'),
    answers: DS.hasMany('answer'),
    childQuestions: DS.hasMany('question', {async:true})
});

添加逻辑看起来像这样:

$.ajax({
            url: "questions",
            data: {"templateId": templateQuestionId, "parentQuestionId": someId},
            dataType: "json",
            type: "POST"
        }).done(function (data) {


          /*
          data looks something like
{"questions":[
      {"id":122,
      "questionName":"some question name",
      "attributes": {"pinned":false,"randomized":false},
      "answers":[1,2],
      "childQuestions":[]
      }]
,"answers":[
      {"id":1,"answerText":"some text"}
     ,{"id":2,"answerText":"some text"}
  ]}
   */
                store.pushPayload('question', data);
                var questionId = data.question.id;
                store.find('question', questionId).then(function(question){
                    parent.get('childQuestions').pushObject(question);
                });
                self.send('toggleBody');
            });

1 个答案:

答案 0 :(得分:2)

在转移到服务器和从服务器转移期间应用转换,而不是在get / set期间应用转换。