0

私のモデルは:

Ext.define('GS.model.user', {
    extend: 'Ext.data.Model',
    fields: [{
        name: 'id',
        type: 'string'
    }, {
        name: 'username',
        type: 'string'
    }, {
        name: 'email',
        type: 'string'
    }]
});

私のストアコードは次のとおりです。

Ext.define('GS.store.userstore', {
    extend: 'Ext.data.Store',
    requires: 'GS.model.user',
    config: {
        model: 'GS.model.user',
        autoLoad: true,
        // data: [],
        proxy: {
            type: 'ajax',
            url: '/app/mydata.json',
            reader: {
                type: 'json',
                root: 'users'
            }
        }
    },
    listeners: {
        load: function(store) {
            alert(store.getCount());
            console.log(store.getAt[0]);
        }
    }
});

コードを表示:

Ext.define('GS.view.userlist', {
    extend: 'Ext.form.Panel',
    xtype: 'userpanel',
    requires: ['GS.store.userstore', 'Ext.form.Panel'],

    config: {
        itemTpl: '{store.get("id"),{sotre.get("username")},{store.get("email")}',
        store: 'userstore'
    }
});

Jsonデータ:

[{
    "users": [{
        "id": "1001",
        "username": "user1",
        "email": "abc@unisys.com"
    }, {
        "id": "1002",
        "username": "user2",
        "email": "abcd@unisys.com"
    }, {
        "id": "1003",
        "username": "user3",
        "email": "abce@unisys.com"
    }, {
        "id": "1004",
        "username": "user4",
        "email": "abcf@unisys.com"
    }]
}]

グーグル雑用でそれを実行した後、私はエラーが発生しています:

OPTIONS file:///D:/app/mydata.json?_dc=1334569840508&page=1&start=0&limit=25

リソースを読み込めませんでした。

どうすれば可能か教えてください。jsonデータ値を取得してリストとして入力するにはどうすればよいですか?助けて。

4

5 に答える 5

2

URLで使用localhostしてアプリを実行します

例えば:

http://localhost/your_app

于 2012-04-17T08:27:58.997 に答える
1

あなたのjsonデータは正しくないようです。

「users」を引用符で囲んではいけません。すべての「id」、「username」、および「email」ステートメントで同じことが言えます。

Json データ:

{
   users:
      [
         { id: "1001", username: "user1" , email:"abc@unisys.com"},
         { id: "1002", username: "user2" , email:"abcd@unisys.com"},
         { id: "1003", username: "user3" , email:"abce@unisys.com"},
         { id: "1004", username: "user4" , email:"abcf@unisys.com"}
      ]
}
于 2012-04-16T11:28:01.127 に答える
1

コードには 2 つの問題があります。

  1. JSON は有効ですが、配列であるため、JSON リーダーで読み取ることができません。を削除する[]動作します:

    {
        "users": [
            {
                "id": "1001",
                "username": "user1",
                "email": "abc@unisys.com"
            },
           ...
        ]
    }
    
  2. リーダー内では、使用する必要がありますrootProperty- not root:

    reader: {
        type: 'json',
        rootProperty: 'users'
    }
    
  3. itemTplを使用してフィールドに直接アクセスできます。{fieldName}使用する必要はありませんstore.get('xxx')

    itemTpl: '{username}, {email}'
    

ファイルが読み込まれないのは・・・ わからない。別のブラウザーを試してみて、それでも機能しない場合は、ファイルが実際に存在することをもう一度確認してください。

于 2012-04-16T21:33:29.950 に答える
1

パスが間違っていませんか?私には、ファイルを見つけることさえできません。

proxy: {
        type: 'ajax',
        url : 'app/mydata.json', // CHANGE THIS TO 'app/mydata.json'
        reader: {
            type: 'json',
            root: 'users'
           }} },

私はあなたのjsonをjsonlint.orgに入れて合格したので、それは問題ではないと思います。エラーに基づいて、パスが正しいとは思いません。上記の投稿が機能しない場合は、mydata.json をルート フォルダーにコピーします。ここには index.html があり、プロキシ URL を url: 'mydata.json' として構成するだけです。

于 2012-04-16T13:17:59.170 に答える
0

http.ie経由でアクセスできるはずの場所にjsonファイルをホストします。つまり、ローカルマシンで実行されているサーバーのいずれかにファイルを配置し、ストアのプロキシのurlセクションにURLを指定します。

于 2013-04-08T11:35:48.877 に答える