【问题标题】:Sencha Touch background syncing of storeSencha Touch 店铺后台同步
【发布时间】:2014-08-29 08:05:16
【问题描述】:

我有一个绑定到商店的列表。我有一个输入文本字段(想想像 UX 一样的聊天),当用户点击一个按钮时,我会这样做:

var newMessageData = {
    text: textMessage
};
var message = Ext.create('MyApp.model.Message', newMessageData);
messagesStore.add(message); // At this point, the message shows up in my list
message.save(); // On a successful save, an identical message shows up again in this same list

我该如何实现这一点,所以消息一开始只显示一次(在用户输入内容后立即显示),然后记录本身只是在后台与服务器同步。

非常感谢您的帮助!谢谢!

编辑: 我的模型定义非常简单,包含简单的字段和一些转换后的字段 + 自定义 idProperty:

idProperty: 'objectId',
{
    name: 'objectId',
    persist: false
}

【问题讨论】:

    标签: extjs store sencha-touch-2.3


    【解决方案1】:

    您应该能够使用 messagesStore.sync() :

    将 Store 与其代理同步。这要求代理进行批处理 将商店中的任何新的、更新的和删除的记录放在一起,更新 存储在每个操作中记录的内部表示 完成。

    http://docs.sencha.com/touch/2.4.0/#!/api/Ext.data.Store-method-sync

    【讨论】:

    • 是的,我也试过了。当我执行 messagesStore.add() 时,列表会随着添加的记录而更新。而且,当我执行 sync() 时,它会添加另一个。想法?
    • 如果有帮助的话,messagesStore 是一个关联的存储——所以基本上, someRecord.messages()
    • 在sync()之后是存储有两条记录还是视图不同步?
    • 同步后商店实际上有2条记录——两条记录都是非脏的。
    • 我们是否应该继续解决为什么 store 的同步方法没有按照我们认为的那样做,或者我们应该写一些代码来解决这个问题?
    【解决方案2】:

    好的,所以缺少的是我必须将键“primaryKey”添加到我的 hasMany 和 belongsTo 关系中。就我而言,我有 idProperty: 'myCustomId',但仅此一项不适用于关联模型。我必须将 primaryKey: 'myCustomId' 添加到我的 hasMany 和 belongsTo 关系中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-29
      • 1970-01-01
      • 2012-06-17
      • 2011-09-01
      • 2014-03-03
      相关资源
      最近更新 更多