0

サーバーからデータを取得してモデル インスタンスに変換する方法が見つかりません。こちらの指示に従いましたが、まだ機能しません。これが私のセットアップです:

サービスの URL: 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。しかし、その後、pipecanjs の関数内で結果が失われます (つまり、が呼び出されundefinedたときに結果が得られます)。d.resolve.apply(d, arguments)

このシナリオの何が問題になっていますか? jqueryバージョン1.0.7でcanJSを使用しています

4

1 に答える 1

1

IDを変更するためだけにカスタムコンバーターが必要だとは思いません。id静的プロパティを設定することで変更できます。次のようにしてみてください。

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

MyModel.findOne({ id : 'test' }).done(function(model) {
  console.log(model);
});
于 2012-11-14T14:06:20.060 に答える