2012-11-13 42 views
0

我無法找到從服務器檢索數據並將其轉換爲模型實例的方法。我遵循指示here,但它仍然無法正常工作。 這是我的設置:Canjs模型在解析後返回undefined

該服務的網址:services/foo/barOne。響應爲:{"calendar":1352793756534,"objectId":"id2"}

模型定義如下:

var myModel = can.Model(
    model: function(raw) { 
    newObject = {id:raw.objectId}; 
    return can.Model.model.call(this,newObject); 
    }, 

    findOne: { 
    url: 'services/foo/barOne', 
    datatype: 'json' 
    } 

) 

這裏是我如何使用:

myBar = myModel.findOne() 
myBar.then(function() { 
    console.log("resolved with arguments:",arguments); //[undefined] 
}) 

我把各種日誌和跟蹤的所有的函數調用,請求正確完成,並且ajax正確解析。 model方法也是正確的,並返回具有正確參數的Constructor類型的對象。 但在那之後,canjs的pipe函數裏,結果不丟失(即,我得到的結果undefinedd.resolve.apply(d, arguments)叫)

有什麼不對這種情況? 我正在使用canJS jQuery版本1.0.7

回答

1

我不認爲你需要一個自定義轉換器只是爲了改變id。您可以通過設置靜態id屬性來更改它。嘗試像這樣:

var MyModel = can.Model({ 
    id : 'objectId' 
}, { 
    findOne: 'services/foo/barOne' 
}); 

MyModel.findOne({ id : 'test' }).done(function(model) { 
    console.log(model); 
}); 
+0

你的例子'應該'的工作。如果我只想進行名稱翻譯就沒問題,但我想在將數據包裝到模型中之前進行一些處理。 而can.jquery.js也存在一個問題(參考我在canJS [論壇]上的帖子(https://forum.javascriptmvc.com/#Topic/32525000001079183) –

+0

就像在論壇中所說的那樣:http ://jsfiddle.net/donejs/rB4AM/ – Daff

+0

標記爲已解決。我的can.js版本不是最新版本。使用最新版本修復了此問題。完整線程[here](https://forum.javascriptmvc .COM /主題/定製模型的方法#32525000001081163) –

相關問題