gpt4 book ai didi

javascript - CanJS parseModels 和数据强制

转载 作者:行者123 更新时间:2023-11-29 21:56:51 25 4
gpt4 key购买 nike

我想我这里可能有一个奇怪的用例。我有一个带有 codetitledescription 属性的 Code 模型。用户正在记录工作(医疗保健),他们输入 code,比如 7,而 7 总是意味着发生了一些特别的事情,比如“The patient被治愈了。”随便,无所谓。重点是,我不想在每个模型中都保存 titledescription,但我希望能够拉出它们进行显示。

因此 API 提供了一组代码,例如 [ 1, 13, "A4"]。我正在尝试同时使用 can.Model.parseModelcan.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 仅在检索 CRUD 服务数据期间调用。

为了使您的示例工作,您必须使 Model.parseModel 将每个代码数组转换为对象数组。

或者,您可以将模型的 define.Codes.Type 更改为如下内容:

Codes: {
type: function(newVal){
if(newVal instanceof Code.List) {
return newVal
} else {
return new Code.List( newVal.map(function(num){ return {value: num}}) )
}
}
}

关于javascript - CanJS parseModels 和数据强制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26109763/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com