我找不到从服务器检索数据并将其转换为模型实例的方法。我完成了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
答案 0 :(得分:1)
我认为您不需要自定义转换器来更改ID。您可以通过设置静态id
属性来更改它。试试这样:
var MyModel = can.Model({
id : 'objectId'
}, {
findOne: 'services/foo/barOne'
});
MyModel.findOne({ id : 'test' }).done(function(model) {
console.log(model);
});