2012-05-06 2 views
1

У меня есть FilteringSelect с использованием MemoryStore. Когда пользователь вводит значение, не находящееся в хранилище, они запрашиваются, спрашивая, хотите ли они добавить новое значение в хранилище. Если это так, мы вызываем сервер, создаем новый элемент и в ответ сообщим о событии.Установленное значение на dijit/form/FilteringВыберите после его создания

Абонент темы уведомляется о том, что новый элемент был создан и добавлен в память, который добавляет параметр filteringselect.

На данный момент выбор фильтра по-прежнему имеет тот же самый параметр displayValue, и опция существует в выборе. FilteringSelect.get ("value") все равно возвращает "".

Если вы должны были ввести пробел, то нажмите backspace (в конечном итоге с тем же значением), FilteringSelect.get("value") вернет правильный идентификатор элемента.

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()); 
    })); 
})); 

ответ

1

Вы пробовали настройки пункта (т.е. filteringSelect.set("item", newItem) вместо установки значения? Обратите внимание, что вы должны дать ему весь элемент, а не только идентификатор или отображаемое значение.

Итак, нажмите пункт в магазине, а затем установить деталь на FilteringSelect:

this.liftStore.data.push(newItem); 
this.lift.set("item", newItem); 
+0

Вместо того, чтобы использовать «проталкивания» данных, предпочитают использовать store.put (newItem) Потому что это лучший способ справиться магазин.! –

 Смежные вопросы

  • Нет связанных вопросов^_^