Модель 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);
});
Другие вопросы по тегам