Я думаю, что у меня может быть странный случай использования. У меня есть модель Code
с атрибутами code
, title
, description
. Пользователи документируют работу (здравоохранение), они вводят code
, скажем 7
, а 7
всегда означает, что что-то особенное произошло, скажем: «Пациент был излечен». Неважно, не имеет значения. Точка в том, что я не хочу беспокоить сохранение title
и description
в каждой модели, но я хочу, чтобы их можно было вытащить для отображения.CanJS parseModels и принуждение данных
Таким образом, API предоставляет массив таких кодов, как [ 1, 13, "A4" ]
. Я пытаюсь использовать как can.Model.parseModel, так и can.Map.define, чтобы принудить этот массив к Code
моделям, но мне тяжело.
Почему parseModel, parseModels никогда не вызывали в этом примере?fiddle
Code = can.Model.extend({
parseModel: function(data) {
// return { code:data }
console.log('Never hit!');
},
parseModels: function() {
// ...
console.log('Never hit!');
}
},{
_title: can.compute(function() {
// return title from cached lookup
})
});
Model = can.Model.extend({
findAll: 'GET /Models'
},{
define: {
Codes: {
Type: Code.List
}
}
});
can.fixture('GET /Models', function() {
return [
{ Codes: [1,2,3] }, // I want to turn each number into an object
{ Codes: [4,5,6] },
{ Codes: [7,8,9] }
];
});
Model.findAll({});
Спасибо. Это было одно из моих догадок. Было бы неплохо, если бы светильники использовали parseModels, как ожидалось. –
Ответы на ярлык выполняются через parseModels. Но только parseModels модели делают запрос. parseModels предназначен только для манипулирования данными Ajax. Что-то еще нужно сделать с помощью плагина define. –
О, это очищает его. –