Canjs模型在解决后返回undefined

时间:2012-11-13 09:57:02

标签: javascriptmvc canjs canjs-model

我找不到从服务器检索数据并将其转换为模型实例的方法。我完成了here的说明,但它仍然不起作用。 这是我的设置:

服务的网址: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函数内,结果丢失了(即,在调用undefined时得到结果d.resolve.apply(d, arguments)

这种情况有什么问题? 我正在使用canJS和jquery版本1.0.7

1 个答案:

答案 0 :(得分:1)

我认为您不需要自定义转换器来更改ID。您可以通过设置静态id属性来更改它。试试这样:

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

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