gpt4 book ai didi

javascript - Dojo Filtering选择负载数据

转载 作者:行者123 更新时间:2023-11-30 10:37:27 25 4
gpt4 key购买 nike

下面的代码将创建一个 FilteringSelect 并设置第一个选中的项目:

// Store initialization:
var jsonStore = custom.store.JsonRest({ ... });
var memoryStore = dojo.store.Memory();
var myStore = dojo.store.Cache( jsonStore, memoryStore);
var dataStore = custom.store.MyObjStore({ objectStore: myStore, ... });

// FilteringSelect initialization:
var fsel = new dijit.form.FilteringSelect({
id: 'fsel',
searchAttr: 'id',
store: dataStore
});

// Setting the first item on FilteringSelect, retrieved from store objects
fsel.store.fetch({ query: {id:""},
onComplete: function (items, request) {
var val = "";
if (items.length>0) val = items[0].id;
fsel.set('value', val);
}
});
  1. 第一个问题是,如果 items[0].id = 0,则此项目未在 FilteringSelect 上设置。

  2. fsel.store.fetch({ ... }) 查询服务器,没问题。问题是检索到的项目没有保存在内存中,或者它们保存在内存中,但 FilteringSelect 在下一个事件中没有检索到。我的意思是,当我第一次点击 FilteringSelect 的下拉菜单时,另一个查询被发送到服务器以获取项目,随后它们从内存中获取。

谁能帮我解决这两个问题?

注意:我使用的是 Dojo 版本 1.7.2 (27913)。

最佳答案

在与 dojo 的人交谈后,我通过以下方式解决了我的问题:

  1. 切换到最新版本 (1.8.1),解决了第一个问题。

  2. 在 FilteringSelect 上使用 memoryStore,而不是缓存存储 (myStore),将只使用内存中的对象。对 myStore(缓存存储)进行查询会将对象从服务器加载到内存。

// Store initialization:
var jsonStore = new JsonRest({ ... });
var memoryStore = new Memory();
var myStore = new Cache(jsonStore, memoryStore);
// Note: ObjectStore was removed.

// FilteringSelect initialization:
var fsel = new FilteringSelect({
id: 'fsel',
searchAttr: 'id',
store: memoryStore
});

// Setting the first item on FilteringSelect and loading items to memory
when (myStore.query({id:""}),
function (items, request) {
var val = "";
if (items.length>0) val = items[0].id;
fsel.set('value', val);
}
);

关于javascript - Dojo Filtering选择负载数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13088240/

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