我 FilteringSelect
使用了一个MemoryStore
. 当用户键入不在商店中的值时,系统会提示他们,询问他们是否要将新值添加到商店中。如果他们这样做,我们调用服务器,创建新项目,并在响应中发布一个事件。
主题订阅者被通知新项目已创建并添加到 MemoryStore,这会将选项添加到过滤选择。
此时,过滤select仍然有相同的displayValue,并且该选项存在于select中。FilteringSelect.get("value") 仍然返回 ""。
如果您要键入一个空格,然后按退格键(以相同的值结束),FilteringSelect.get("value")
将返回正确的项目 ID。
FilteringSelect.set("value", data[0].id)
不做任何事情,不抛出异常,不影响。
这是代码,包含我尝试过的一些随机调用。
require(["dojo/store/Memory", "dojo/_base/array", "dojo/topic"],
lang.hitch(this, function(Memory, array, topic) {
this.liftStore = new Memory({
data: []
});
array.forEach(data, lang.hitch(this, function(entry, i) {
this.liftStore.data.push({
name: entry.Name,
id: entry.ID,
identifier: entry.ID
});
}));
this.lift.set("store", this.liftStore);
topic.subscribe("LiftLog/NewLift", lang.hitch(this, function(data) {
debugger;
data[0].selected = true;
data[0].identifier = data[0].id;
this.liftStore.data.push(data[0]);
this.lift.reset();
this.lift.set("value", data[0].id);
this.lift.set("value", data[0].id.toString());
}));
}));