を FilteringSelect
使用していMemoryStore
ます。ユーザーがストアにない値を入力すると、新しい値をストアに追加するかどうかを尋ねるプロンプトが表示されます。存在する場合は、サーバーを呼び出して新しいアイテムを作成し、応答でイベントを発行します。
新しいアイテムが作成され、MemoryStore に追加されたことがトピック サブスクライバーに通知されます。これにより、filteringselect にオプションが追加されます。
この時点で、フィルタリング選択はまだ同じ displayValue を持ち、オプションは選択に存在します。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());
}));
}));