Модель Canjs возвращает неопределенное значение после разрешения
Я не могу найти способ получить данные с сервера и преобразовать их в экземпляр модели. Я следовал инструкциям здесь, но это все еще не работает. Вот моя установка:
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
с правильными параметрами. Но после этого, внутри pipe
функция canjs, результат потерян (т.е. я получил результат undefined
когда d.resolve.apply(d, arguments)
называется)
Что не так с этим сценарием? Я использую canJS с JQuery версии 1.0.7
1 ответ
Я не думаю, что вам нужен специальный конвертер только для изменения идентификатора. Вы можете изменить его, установив статический id
имущество. Попробуйте это так:
var MyModel = can.Model({
id : 'objectId'
}, {
findOne: 'services/foo/barOne'
});
MyModel.findOne({ id : 'test' }).done(function(model) {
console.log(model);
});