0

我找不到从服务器检索数据并将它们转换为模型实例的方法。我按照此处的说明进行操作,但仍然无法正常工作。这是我的设置:

服务的网址: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 回答