Dojo:TypeError:marketStore.query不是函数
Dojo: TypeError: marketStore.query is not a function
我试图从dojo网站扩展/修改一个示例,但遇到了一个错误(使用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({});
为什么?
您似乎正在尝试将dstore与dgrid 0.3一起使用。这是不起作用的,这就是为什么你会得到这个错误(dgrid试图调用dojo/store query
API,但它在dstore中不存在)。dgrid在0.4转为dstore。
您有3个选项:
- 将dgrid 0.4与dstore一起使用
- 使用dgrid 0.3和使用DstoreAdapter的dstore将存储转换为dojo/store API
- 使用dojo-smore中的原始RequestMemory存储(它基于dojo/store API)
EDIT:根据对该问题和相关教程的更多阅读,很明显,对query
的调用可能不是来自dgrid,而是来自从教程中复制粘贴的代码(上面的问题中没有包含)。
考虑到有问题的教程使用dojo/store,而dgrid0.4使用dstore,您将无法简单地复制粘贴那里的信息,但dgrid0.4有一个商店教程,dstore也有自己的教程,包括自己版本的实时商店教程。
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 将函数的上下文应用于javascript变量
- 如何在JavaScript中将字符串转换为函数引用
- 用嵌套函数和默认函数定义函数
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 无法导出函数expressjs/requestjs中的变量
- 函数参数中的数据与指定变量之间的任何性能差异
- JQuery合并了keyup和focusout两个函数
- ES6构造函数返回基类的实例
- 监视函数从服务返回不起作用,但作用域函数起作用
- 我可以在json对象中添加一个函数吗
- AngularJS:我可以跳过函数参数回调吗
- 如何使jQuery插件函数可调用以供独立使用,而不在集合上操作
- JavaScript数组排序(函数)用于对表行进行排序,而不是排序
- jquery点击函数select&取消选择
- 拨打'父亲'函数形式a'儿童'ReactJS中的组件
- Node.js v6.2.0类扩展不是函数错误
- 比较从函数和生成的日期对象
- jQuery中是否内置了任何字符串格式化函数
- Dojo:TypeError:marketStore.query不是函数