2016-09-24 22 views
0

だから私は次のコードを持っている:ExtJSのストアからのデータへのアクセス?

モデル:

Ext.define('Sandbox.model.User', { 
    extend: 'Ext.data.Model', 
    fields: [ 
     { name: 'Name', type: 'string' }, 
     { name: 'Email', type: 'string' }, 
     { name: 'TelNumber', type: 'string' }, 
     { name: 'Role', type: 'string' } 
    ] 
}); 

ストア

Ext.define("Sandbox.store.Users", { 
    extend : 'Ext.data.Store', 
    model : 'Sandbox.model.User' 
}); 

をそして私が店に上にデータをロードし、次のApplication.jsがあります

Ext.define('Sandbox.Application', { 
    extend: 'Ext.app.Application', 

    name: 'Sandbox', 

    stores: [ 
     'Users' 
    ], 

    launch: function() { 

     var userStore = Ext.getStore('Users'); 
     userStore.add(
      [ 
       { 
        Name : 'John', 
        Email: '[email protected]', 
        TelNumber : ' 0330 122 2800', 
        Role : 'Administrator' 
       }, 
       { 
        Name : 'Sarah', 
        Email : '[email protected]', 
        TelNumber: ' 0330 122 2800', 
        Role : 'Customer' 
       }, 
       { 
        Name : 'Brian', 
        Email : '[email protected]', 
        TelNumber: ' 0330 122 2800', 
        Role : 'Supplier' 
       }, 
       { 
        Name : 'Karen', 
        Email : '[email protected]', 
        TelNumber: ' 0330 122 2800', 
        Role : 'Administrator' 
       } 
      ] 
     ); 

     var userStore = Ext.getStore('Users'); 
     console.log("Store size " + userStore.getCount()); 

     console.log("Person #1: " + userStore.getAt(0).Name); 
    } 
}); 

アプリケーションが起動されると、正しいストアサイズ(4)が記録されます。しかし、インデックス0の特定のデータに対する2番目のログは、値が未定義であることを返します。 ExtJSは非同期ですが、データはハードコードされていることを理解しています。なぜデータを店舗に読み込むのが遅れますか?このコードを修正して、ブラウザでアプリケーションに最初にナビゲートすると、上記の2つのログに正しい情報が表示されます。

答えて

2

このプロパティに直接アクセスすることはできません。

userStore.getAt(0).get("Name") 

EDIT:コードに間違いはありません。問題は単なる構文です。 "ExtJS is asynchronus"はjsライブラリなので大きな誤解です。非同期ではありません。あなたがコード化する方法は、あなたの例ではありません。ストアにデータを手動で追加します。

関連する問題