2013-12-19 30 views
2

我已經使用自定義的一個模型變換像新記錄時:如何應用自定義轉換手動創建使用store.createRecord

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

現在我想創建一個問題記錄,如:

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

它創造了一個記錄,但它不自定義轉換適用於裝載記錄(或屬性)。任何想法如何在手動創建記錄時應用轉換?

感謝, 迪

* UPDATE:工作液*

我的模型看起來是這樣的:

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'); 
      }); 

回答

2

Transformat離子在傳送到服務器和從服務器傳送過程中被應用,而不是在獲取/

+0

因此,有沒有辦法,我們可以申請轉變爲我們提供給餘燼JSON數據(可能數據不是從服務器,但手動提供)? –

+0

不在創建過程中,ember數據假定您已完全控制該代碼,並可以按照您的需要操作它。忽視我之前對使用二傳手的咆哮,我錯過了你在做的事情。爲什麼你需要反序列化obj? – Kingpin2k

+0

它還挺有關http://stackoverflow.com/questions/20549321/how-can-we-perform-rollback-on-transformed-data。我創建了一個基於模板的新問題記錄,但模板本身並不是問題模型的一部分。例如:我會使用POST請求/ question?template_id = 1創建一個新問題。該請求將在db中創建一個新問題,然後以適當的Ember格式返回json數據。我想利用這些數據並在客戶端添加一條記錄。當這樣的屬性數據似乎是普通的JSON對象,但不是反序列化Ember.Object –

相關問題