2012-03-31 8 views
4

Sencha touch 2を使用してナビゲートビューを作成しました。ナビゲーションビューには、ストアとモデルを使用してロードするリストコンポーネントがあります。必要に応じてモデルとストアを作成しました。私のアプリを実行すると、リストはデータをレンダリングしません。 また、conorseで警告を表示します[Ext.dataview.List#applyStore] The specified Store cannot be found。このエラーが何を意味するのか分かりません。 ここに私のMVCのコードは、あるストアsencha touch 2を使用してリストにデータをロード

モデル:

Ext.define('GS.model.BlogModel', { 
extend: 'Ext.data.Model', 

config: { 
    fields: [ 
     {name: 'title', type: 'auto'}, 
     {name: 'author', type: 'auto'}, 
     {name: 'content', type:'auto'} 
     ] 
    } 
}); 

店舗:

Ext.define('GS.store.blogs',{ 
extend:'Ext.data.Store', 
config:{ 
    model:'GS.model.BlogModel', 
    autoLoad :true, 
    proxy:{ 
       type:'jsonp', 
       url:'https://ajax.googleapis.com/ajax/services/feed/load?v=1.0&q=http://feeds.feedburner.com/SenchaBlog', 
       reader:{ 
        type:'json', 
        rootProperty:'responseData.feed.entries' 
       } 
      } 
} 
}); 

ビュー:

Ext.define('GS.view.Blog',{ 
extend:'Ext.navigation.View', 
xtype:'blog', 
requires:[ 
    'Ext.dataview.List', 
    'Ext.data.proxy.JsonP', 
    'Ext.data.Store', 
    'GS.store.blogs' 
], 
config: { 
    title:'Blog', 
    iconCls:'star', 
    items:{ 
     xtype:'list', 
     itemTpl:'{title}', 
     title:'Recent Posts', 
     store:'GS.store.blogs' 
    } 

} 
}); 

誰かが私を指摘することができるもの/ すべてのヘルプ不足しています感謝。

答えて

5

リストのitemsstoreプロパティは、クラス名ではなくインスタンスである必要があります。 GS.store.blogsはクラス名です。 Ext.createを使用してこのクラスのインスタンスを作成し、そのインスタンスをitemsに渡す必要があります。ええ、itemsの構文も間違っています。 []オブジェクトではない{}である必要があります。そうですね、

var blogsStore = Ext.create("GS.store.blogs"); //put this in the items list 

Ext.define('GS.view.Blog',{ 
    extend:'Ext.navigation.View', 
    xtype:'blog', 
    requires:[ 
     'Ext.dataview.List', 
     'Ext.data.proxy.JsonP', 
     'Ext.data.Store', 
     'GS.store.blogs' 
    ], 
    config: { 
     title:'Blog', 
     iconCls:'star', 
     items:[{ 
      xtype:'list', 
      itemTpl:'{title}', 
      title:'Recent Posts', 
      store: blogsStore //Store instance here. And items are in array, not Object 
     }] 

    } 
}); 
+0

Ext.createは私の店の新しいインスタンスを作成します。私が同じ店舗をどこに使っていてもapp.jsに店舗を追加しなければならない場合は、['blogs'] 'が見つかりませんでした。 'store: 'GS.store.blogs''私は' store:blogs 'に変更しました。 – mehul9595

+0

この警告['Ext.dataview.List#applyStore]指定されたストアを見つけることができません 'は、ブログストアに':GS.model.BlogModel']を追加することで解決されました。 – mehul9595

+0

私はストアインスタンスを一度作成してから、「Ext.data.StoreManager.lookup」を使ってどこでも同じストアを使用します。あなたのやり方がうまくいくことを知ってよかった。私は何か新しいことを学んだ:) – Jay

関連する問題