2014-05-01 37 views
0

想知道如果有人在這裏可以幫助嗎?HttpRequest.getString打錯誤函數,即使其成功

採用高分子達特我已經成立了一個服務使用下面的代碼加載一個JSON提要:

Future loadService(){ 
    return HttpRequest.getString(_serviceURL) 
    .then(buildView) 
    .catchError(handleError); 
}   

當這段代碼執行時,它成功地擊中了我的buildView功能,但我也越來越從我的把手誤差函數打印出一個錯誤:

void handleError(Error error){ 
    print(error); 
} 

我有我的JSON飼料3項:

[ 
    { 
    "module": "module-1", 
    "data": { 
     "title": "Dynamic Title 1", 
     "text": "This is the dynamic text for content block 1." 
    } 
    }, 
    { 
    "module": "module-2", 
    "data": { 
     "title": "Dynamic Title 2", 
     "text": "This is the dynamic text for content block 2." 
    } 
    }, 
    { 
    "module": "module-3", 
    "data": { 
     "title": "Dynamic Title 3", 
     "text": "This is the dynamic text for content block 3." 
    } 
    } 
] 

我得到的錯誤是:「RangeError:3」。

我無法找到很多關於可能導致此問題的信息。它似乎不妨礙我的應用程序,但我想盡可能將其清除。如果任何人有任何建議,我都耳熟能詳。

謝謝!

編輯:按照建議通過岡特Zöchbauer

現在我明白了.catchError()函數從。那麼()函數捕捉錯誤。我認爲它只會在HttpRequest本身失敗時發現錯誤。

在buildView我使用的是像這樣遍歷JSON對象循環:

void buildView(String jsonString){ 

    contentBlocks = JSON.decode(jsonString);   
    DivElement wrapper = $['content-modules-wrapper']; 

    for(int i=0; i < contentBlocks.length; i++){ 
     Element element = new Element.tag(contentBlocks[i]['module']); 
     wrapper.children.add(element); 
    } 
} 

哪項是錯誤的,因爲需要。長度JSON字符串的長度(300個字的東西),我認爲這是一個有點奇怪的,因爲我已經將其轉換爲對象。不管怎麼樣,我改變功能,以這個固定:

void buildView(String jsonString){ 

    contentBlocks = JSON.decode(jsonString);   
    DivElement wrapper = $['content-modules-wrapper']; 

    contentBlocks.forEach((block){ 
     Element element = new Element.tag(block['module']); 
     wrapper.children.add(element); 
    }); 
} 

是否有一種方式來獲得的項目數量在JSON對象像我想做或應該總是使用forEach()來循環訪問它?

回答

2

此錯誤可能來自您的buildView。結果的指數從0到2而不是從1到3.