2013-07-19 44 views
2

我使用Sencha建築師出於測試目的。 我添加了一個列表視圖,與商店連接,與模型連接。 該店配置加載以下JSON數據:列表視圖閱讀通過JSON沒有鑰匙

{ 
    "data": { 
     "blacklist":[ 
      "word 1", 
      "word 2", 
      "word 2" 
     ] 
    } 
} 

每一個「字x」應該在我的列表視圖

現在我想建立我的模型被列爲列表項。但是一個模型確實需要「字段名稱」,在我的情況下不存在。

如果我使用以下JSON數據:

{ 
    "data": { 
     "blacklist":[ 
      {"name": "word 1"}, 
      {"name": "word 2"}, 
      {"name": "word 3"} 
     ] 
    } 
} 

,給我的模型名爲「名稱」字段中,一切工作正常。

但是我如何設置這個場景,如果我的JSON值沒有在模型中定義的鍵(如字段/字段名)?

回答

1

不知道你想要對你的結果做什麼,你可以修改這段代碼來獲得你要找的東西。

App.js

Ext.Loader.setConfig({ 
    enabled : true 
}); 


Ext.application({ 
    name : ('SF' || 'SenchaFiddle'), 

    models : ['TestModel'], 

    stores : ['TestData'], 

    launch : function() { 
     Ext.create('Ext.dataview.List', { 
      fullscreen : true, 

      model : 'TestModel', 

      store : 'TestData', 

      itemTpl : "{blacklist}" 
     }); 
    } 
}); 

型號:

Ext.define('SF.model.TestModel', { 
    extend : 'Ext.data.Model', 

    config : { 
     fields : [{ 
      name : 'blacklist', 
      type : 'string', 

      // **This is where you will parse out the values of 'blacklist'** 

      convert : function(value, record) { 
       console.log("value: ", value.length); 
       console.log("Record: ", record); 

       var returnArr = []; 
       if (value && value.length > 0) { 
        for (var i=0; i<value.length; i++) { 
         returnArr[i] = value[i]; 
        } 

        return returnArr; 
       }; 

       return "Could not Convert"; 
      } 
     }] 
    } 
}); 

商店:

Ext.define('SF.store.TestData', { 
    extend : 'Ext.data.Store', 

    config : { 
     model : 'SF.model.TestModel', 

     data : [{ 
      "blacklist":[ 
       "word 1", 
       "word 2", 
       "word 2" 
      ] 
     }], 
    } 
}); 

請讓我知道如果我錯過了一些問題,

好運,布拉德

+0

哇。謝謝你這個偉大的答案。但我有問題,但。我將「config」屬性添加到模型的字段中。如果我輸出「returnArr」,它會正確輸出爲[「word 1」,「word 2」]。但我的列表只顯示一個列表項目,如下所示:「單詞1,單詞2」我錯過了什麼? – agrT

+0

我想我看到了這一點: 「轉換」功能只遍歷每個項目。在這個階段,該項目可以修改,但這不是我要實現的。 我要實現的是,這些項目在列表中被識別爲單個項目(在這種情況下爲3個項目)。但列表將所有項目視爲1 – agrT

+0

您對api有多少控制?你能調整任何結果嗎?我認爲你想要的是可能的,而無需修改json結果,但它會是hacky。 – bwags