2013-03-09 28 views
1

Im正在製作Sencha Touch PhoneGap-app。 我試圖在Sencha Touch 2.1中添加一個帶有轉換功能的模型到模型中 這個轉換函數應該找到單個字母並替換它們(「convFAF」)。現場轉換功能在Sencha Touch模型中失敗

我不明白爲什麼它失敗。

使用適當的功能,列出使用模型的(列出商店的)列表顯示空白。 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

最奇怪的部分是,如果我將record.get('AgeFrom');切換到'分析',該函數工作。也似乎與Group,Unit和SortOrder一起使用,但與AgeFrom或AgeTo(我現在感興趣轉換的兩個字段)不兼容。

數據從XML文件加載,其中的副本可以找到here

我以爲加入這個轉換很容易,但是我在這裏完全沒有任何幫助或想法,深表贊同。

+1

不是確定它是否有幫助,但在模型中使用小型'string'作爲類型。順便說一句你得到的錯誤是什麼? – ThinkFloyd 2013-03-12 11:09:59

+0

將它更改爲小寫不起作用。不幸的是,我在控制檯中沒有收到任何錯誤。我正在使用phonegap,因此控制檯錯誤消息通過xcode,不知道這是否會影響控制檯輸出。 – Hessius 2013-03-12 14:56:14

+0

解決了它,謝謝你的小「錯誤是什麼」,哈哈將在下面發佈解決方案。 – Hessius 2013-03-12 15:16:43

回答

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控制檯?)

相關問題