0

Dojoツールキットを使用して、ajaxリクエストを介して外部JSONソース(Webサービス)からデータを取得しています。この取得したデータを使用してItemFileReadStoreを作成し、そのフェッチメソッドを使用して、そこに含まれるオブジェクトのいくつかの属性を出力します。

JSONソースにはネストされた属性があります。例は次のとおりです。

[    
 {
  "name":"michael",
  "surname":"owen",
  "reference": [
    {
      "code":21,
      "date":"01-01-2001"
    },
    {
      "code":134,
      "date":"11-05-2011"
    }
  ]
 },
 {
  "name":"robert",
  "surname":"foreman",
  "reference": [
    {
      "code":33,
      "date":"11-10-2009"
    }
  ]
 },
]

ご覧のとおり、「参照」は、それぞれ2つの属性を持つオブジェクトの配列です。

問題:このデータを使用してItemFileReadStoreを作成しましたが、フェッチしようとしても何も表示されません。私はこれをテストしていて、プレーンな構造(ネストされたオブジェクトなし)で機能することを確認しました。

たぶんお店はよくできていないと思います。

フェッチのコード:

var store = ItemFileReadStore({data: response});  
store.fetch( { query: {'name': 'michael'}, onItem: function(item) {
                            console.log(store.getValue( item, 'surname' ));
                        }
                    });

だから、質問は:ネストされた構造をどうにかして読むことができますか?多分別の種類の店で?別の構文を使用していますか?

ありがとう!

4

1 に答える 1

1

答えは、ストアをどのように使用するかによって異なります。

新しいdojo.storeAPIを使用すると、関数をクエリとして渡すことができ、関数でカスタムフィルタリングを実行できます。

http://dojotoolkit.org/features/1.6/object-store

ただし、現在のdojoウィジェットの多くは引き続きdojo.dataAPI(ItemFileReadStore)を使用しています。アダプタはありますが、クエリに関数を渡すことはできません。

グリッドなどの一部のウィジェットでは、アイテムを直接設定でき、クエリを実行する必要はありません。その場合は、新しいストアAPIを使用して、アイテムをクエリし、手動でグリッドに設定できます。

もありますがdojox.json.query、使ったことがありません。

于 2012-04-19T14:15:09.777 に答える