我正在制作Sencha Touch PhoneGap-app。 我正在尝试将具有转换功能的字段添加到Sencha Touch 2.1中的模型中 这个转换函数应该找到单个字母并替换它们(“convFAF”)。
我无法理解它失败的原因。
使用该功能后,列出(列出使用该模型的商店)的列表显示为空白。 Xcode不会向控制台输出任何错误消息。
我的模特:
Ext.define('Labblistan.model.LabItem', {
extend: 'Ext.data.Model',
config: {
fields: [
{name: 'Group', type: 'String'},
{name: 'Groupname', type: 'String'},
{name: 'Analysis', type: 'String'},
{name: 'Sex', type: 'String'},
{name: 'AgeFrom', type: 'String'},
{name: 'AgeTo', type: 'String'},
{name: 'LowLimit', type: 'String'},
{name: 'UpperLimit', type: 'String'},
{name: 'Unit', type: 'String'},
{name: 'Comment', type: 'String'},
{name: 'SortOrder', type: 'String'},
{
name : 'formattedAnalysis',
type : 'string',
convert : function(v, record) {
var unformattedAnalysis = record.get('Analysis');
if (unformattedAnalysis.indexOf("-") != -1) {
return unformattedAnalysis.substring(unformattedAnalysis.indexOf("-")).substr(1).toUpperCase();
} else {
return unformattedAnalysis.toUpperCase();
}
}},
{name: 'formattedAgeFrom', convert: convertAgeFrom},
]
},
});
function convertAgeFrom(v, record) {
var unformattedAgeFrom = record.get('AgeFrom');
var formattedAgeFrom = unformattedAgeFrom.replace('d', ' d.').replace('y', ' år').replace('m', ' mån.').replace('w', ' v.');
return formattedAgeFrom;
}
正如你所看到的,我已经有了转换函数(“formattedAnalysis” - 工作正常)。
我已尝试在字段定义中使用该函数(根据formattedAnalysis)但结果相同。 我也尝试将AgeFrom类型设置为Auto(以及formatAgeFrom
的auto和string)最奇怪的是,如果我切换record.get('AgeFrom'); “分析”,功能有效。它似乎也适用于Group,Unit和SortOrder,但不适用于AgeFrom或AgeTo(我现在对转换感兴趣的两个字段)。
数据从XML文件加载,其副本可以找到here
我认为添加这种转换很容易,但我在这里完全失败了。非常感谢任何帮助或想法。
答案 0 :(得分:0)
所以,显然当使用Xcode + PhoneGap + Sencha时,你得不到你在浏览器中获得的相同控制台输出。这让我错过了实际导致问题的原因。
Uncaught TypeError: Cannot call method 'replace' of undefined
所以只要检查一下该字段是否为空就解决了它:
function convertAgeFrom(v, record) {
var unformattedAgeFrom = record.get('AgeFrom');
if (unformattedAgeFrom != null) {
var formattedAgeFrom = unformattedAgeFrom.replace('d', ' d.').replace('y', ' år').replace('m', ' mån.').replace('w', ' v.');
return formattedAgeFrom;
}
}
感谢ThinkFloyd请求错误消息。不会想到另外检查。 (虽然我的项目处于当前状态无法在浏览器中运行,但我有一个早期原型,它足够接近抛出相同的错误,有没有人知道是否有办法获取更多信息到xcode控制台?)