1

dojo Web サイトの例を拡張/変更しようとしていますが、(Firebug で) エラーが発生し、理由がわかりません。

これは、私のローカル サーバーで正しく動作する元のチュートリアルです: http://dojotoolkit.org/documentation/tutorials/1.6/realtime_stores/demo/demo.html

今、私は RequestMemory ストアを追加しようとしています:

require([
'dojo/_base/declare',
'dojo/Deferred',
'dstore/Memory',
'dstore/RequestMemory',
'dstore/QueryResults',
'dgrid/Grid',
'dgrid/OnDemandGrid',
'dgrid/extensions/Pagination',
"dgrid/List", 
"dgrid/OnDemandGrid",
"dgrid/Selection", 
"dgrid/editor", 
"dgrid/Keyboard", 
"dgrid/tree", 
"dojo/_base/declare", 
"dojo/store/JsonRest", 
"dojo/store/Observable", 
"dojo/store/Cache", 
"dojo/store/Memory", 
"dojo/_base/Deferred", 
"dojo/query",
"dojo/dom", 
"dojo/dom-construct", 
"dojo/domReady!"
],

function (declare, Deferred, Memory, RequestMemory, QueryResults, Grid, OnDemandGrid, Pagination, Observable, JsonRest, query, dom, domConstruct) {

var data = [
{"name": "Dow Jones", "index": 12197.88, "date": new Date()},
{"name": "Nasdaq", "index": 2730.68, "date": new Date()},
{"name": "S&P 500", "index": 1310.19, "date": new Date()}
];

var store = new (declare(RequestMemory, {
fetchRange: function () {
// Override RequestMemory's fetchRange method with
// one that introduces a delay.
var dfd = new Deferred();
var promise = this.inherited(arguments);
promise.then(function (data) {
  // Add an artificial delay of 1 second
  setTimeout(function () {
  dfd.resolve(data);
  }, 1000);
});
return new QueryResults(dfd, {
  totalLength: promise.totalLength
  });
}
}))({
target: 'node_data.json'
});         

...元の例のように続きます。

「RequestMemory」ストアを挿入した後、次のエラーが発生します。

TypeError: marketStore.query is not a function
var results = marketStore.query({});

なんで?

4

1 に答える 1

3

dgrid 0.3 で dstore を使用しようとしているようです。これはうまくいかないため、エラーが発生します (dgrid が dstore にquery存在しない dojo/store API を呼び出そうとしています)。dgrid は 0.4 で dstore に切り替わりました。

次の 3 つのオプションがあります。

編集: 質問と関連するチュートリアルをさらに読むことに基づいて、おそらく呼び出しがquerydgridからではなく、チュートリアルからコピーアンドペーストされたコードからのものであることが明らかです(上記の質問には含まれていません) )。

問題のチュートリアルは dojo/store を使用していますが、dgrid 0.4 は dstore を使用しているため、そこにある情報を単純にコピーして貼り付けることはできませんが、dgrid 0.4 にはストア チュートリアルがあり、dstore には独自のバージョンを含む独自のチュートリアルがあります。リアルタイム ストアのチュートリアルの

于 2015-03-30T13:30:48.417 に答える