gpt4 book ai didi

javascript - extjs 提交从服务器到存储的答案

转载 作者:行者123 更新时间:2023-11-30 06:31:54 25 4
gpt4 key购买 nike

我尝试开发自己的代理(扩展 Ext.data.proxy.Proxy)。从我的服务器 (json) 获得响应后,我可以解码它并使用我的 Json 阅读器创建一组记录以提交给商店。据我了解,我必须创建一个 Operation 对象并使用 operation.commitRecords() 提交数据。但此行 if (clientRecords && clientRecords.length) 永远不会通过,因为 clientRecords 未定义。我不明白如何使用这个对象,也不知道如何初始化它。这是我当前的代码:

   options.action = options.action || 'read';
var operation = new Ext.data.Operation(options);
var json = reader.read(response);
operation.commitRecords(json.records);

我应该怎么做才能提交记录?提前致谢!

最佳答案

这不是应该创建操作的代理,而是商店。然后它将此操作连同回调一起传递给代理。代理以自己的方式执行操作,并在完成后使用回调通知商店。

因此,对您的问题的简短回答是您需要执行传递给您正在实现的 CRUD 方法的回调。假设它是 read (阿米特是对的,关于您的代码的一些上下文可能会有所帮助)。所以这将是这样的:

// see, the operation is given to us
read: function(operation, callback, scope) {
var me = this;
doWebsocketMagic(function() {
// notify the store
Ext.callback(callback, scope || me, [operation]);
});
}

现在,这还不够,因为需要代理来操纵操作。您必须阅读其他代理的代码才能知道如何操作。 ServerProxy 本来可以帮您省去这些工作,但您没有处理 HTTP 请求(“ServerProxy should ideally be named HttpProxy”)。运气不好。

所以你应该从阅读the read method of MemoryProxy的代码开始.它在一个地方提供了您必须做的一切(我认为)的示例。

然后,也许你可以聪明一点:

Ext.define('My.WebsocketProxy', {
extend: 'Ext.data.proxy.Memory'

,read: function(operation, callback, scope) {
var me = this;
doWebsocketMagic(function(response) {
me.data = response;
Ext.data.proxy.Memory.prototype.read.call(me, operation, callback, scope);
});
}
});

关于javascript - extjs 提交从服务器到存储的答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16987279/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com