여기에 이상한 사용 사례가있을 수 있습니다. code
, title
, description
속성이있는 Code
모델이 있습니다. 사용자는 업무 (의료)를 문서화하고 있으며 , 예를 들어 7
을 입력하고 7
은 항상 "환자는 완치되었습니다"라고 말합니다. 상관 없어요. 요점은 모든 모델에 title
및 description
을 저장하는 것을 원하지 않지만 표시하도록 끌어낼 수 있기를 바랍니다.CanJS parseModels 및 데이터 강제 변환
그래서 API는 [ 1, 13, "A4" ]
과 같은 코드 배열을 제공합니다. 나는 그 배열을 Code
모델로 강요하기 위해 can.Model.parseModel과 can.Map.define을 모두 사용하려고하는데, 힘든 시간을 보내고 있습니다.
왜 parseModel은이 예제에서 호출되지 않았습니까?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({});
감사 :
다른 방법으로, 당신은 같은 뭔가 모델의 define.Codes.Type을 변경할 수 있습니다. 그것이 내 추측 중 하나였습니다. 픽스쳐가 예상대로 parseModels를 사용하면 좋을 것이다. –
조명기 응답은 parseModels를 통해 실행됩니다. 다만, 요구를 실시하는 모델의 parseModel 만입니다. parseModels는 Ajax 데이터를 조작하기위한 것입니다. 다른 것은 define 플러그인으로 수행해야합니다. –
아, 그거 지워. –