为什么是Dojo网格.刷新正在进行另一个服务器调用
Why Dojo grid.refresh is making another server call?
我们正在使用dojo JsonRest。每当我们需要用新数据刷新网格时,dojo就会触发两个服务器调用。
代码如下:
var MyJsonRest = declare(JsonRest, {
get: function(id, options) {
return this.inherited(
arguments,
[id, lang.mixin(this.headers, options)]);
}
});
myDataStore = MyJsonRest({
target: someurl,
headers: {
'moduleUName': somemodulename
},
idAttribute: "id",
query: function(query, options) {
// some other code
}
});
myDataStore.get("", { paramName: paramValue }).then(function(result) { // this fires a request to server
gridObj.refresh(); // this fires same request 2nd time to the server
// if the gridObj.refresh() is commented out, then the grid does not displayes the new data.
});
为了让Grid在不触发刷新的情况下检测存储中的更改,您应该用dojo.store.Observable包装JsonRest存储。对存储的任何更新都将在网格中自动更新。
myCacheDataStore = new Cache(myDataStore, new Memory({});
myObservableDataStore = new Observable(myCacheDataStore)
你应该能够传递myObservableDataStore来代替myDataStore。
要更新或刷新网格,您可以更改目标url或直接更新myDataStore中的标题并调用grid.refresh。我还没有测试过头部的更新,但我的例子改变了目标url从
/rest/users/
/rest/users/?username=jdoe
和网格更新得很好
myDataStore.target = '/rest/users/?username=jdoe'
或者
myDataStore.headers[paramName] = paramValue
因为你的MyJsonRest存储混合的选项提供给"get"到头以及
这个问题的答案似乎比公认的答案要直接得多(从它末尾的注释可以看出)。
你在商店中调用get
,然后在该调用的成功处理程序中调用grid.refresh()
。由于您使用的是基于服务器的存储,因此get
本身将触发一个请求。网格将触发另一个请求(通过商店的query
方法),以获取一个项目列表来填充自己。
从您的示例中可以看出,您最初调用get
是否有其他原因,但是直接调用存储方法不会填充像网格这样的小部件-小部件自己直接访问存储
相关文章:
- 事件循环的MEAN.JS setInterval进程(从另一个服务器获取数据)
- 通过管道将多部分表单上载到另一个服务器
- PHP脚本,用于将目录从一个Linux服务器移动到另一个服务器
- 从JS访问另一个服务器XML
- 将ajax请求发送到另一个服务器(特定的示例不起作用)
- 将Jquery从另一个服务器生成的链接的锚文本传递给Jquery变量
- 如何复制文件从谷歌驱动器到另一个服务器使用php
- Express node.js从node路由向另一个服务器发出get请求
- 为什么Javascript编程在一个服务器上工作而在另一个服务器上不行?
- 通过javascript访问另一个服务器的Form Action
- 通过Jquery Ajax从另一个服务器检索数据
- 使用JavaScript将网站转发到另一个服务器上的pdf文件
- 包括使用JS从另一个服务器来的PHP
- Php重定向到一个服务器到另一个服务器的Php页面
- 在 Node.js 中,如何让一个服务器调用另一个服务器上的函数
- 为什么是Dojo网格.刷新正在进行另一个服务器调用
- 如何重定向到另一个服务器在mvc使用post方法
- 我可以解析JSON远程从另一个服务器动态生成的php页面
- 想创建一个js插件,发送大量的数据异步到另一个服务器
- AJAX等待,直到文件在另一个服务器上存在