Sencha Touch PhoneGap アプリを作っています。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 に設定しようとしました (formattedAgeFrom の auto と string も同様です)。
最も奇妙な部分は、record.get('AgeFrom'); を切り替えた場合です。「分析」に、機能が動作します。また、Group、Unit、SortOrder では機能するようですが、AgeFrom または AgeTo (変換に関心のある 2 つのフィールド) では機能しないようです。
データは XML ファイルから読み込まれ、そのコピーはここにあります
この変換を追加するのは簡単だと思っていましたが、ここで完全に途方に暮れています。どんな助けやアイデアも大歓迎です。