2012-11-13 43 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) –

相关问题