Привязка источника данных из dojo.xhrPost к текстовому полю для автозаполнения - PullRequest
0 голосов
/ 07 декабря 2010

Я унаследовал веб-приложение, которое использует Dojo 1.5 и набор инструментов шаблона.Мне нравится изучать додзё, но оно идет медленно.

Изначально, когда мы открываем нашу веб-форму, у нас будет список файлов в правой части страницы, например ...

AAA_text
BBB_text_1
BBB_text_2
CCC_text
....
....

С левой стороны у нас есть окно поиска, которое запрашивает подмножество файлов для использования.Обычно мы просто набираем «AAA», и тогда div с правой стороны находит те файлы, которые соответствуют, и отображает их после того, как вы нажмете клавишу «Поиск» под полем.

Что мы хотим сделатьэто исключить «окно поиска» и иметь список файлов, соответствующих «AAA», чтобы они появлялись в правой части div при наборе «AAA» (или «BBB» или «CCC» и т. д.).

Я полагаю, что в двух словах это эквивалент нажатия кнопки «Поиск» после того, как каждая клавиша введена в поле поиска.

Звучит ли это как реалистичная цель или даже возможно?Сам код использует тонну Template Tookit, поэтому я не собираюсь переписывать его.

Если я не проясняю себя, дайте мне знать.Я могу уточнить для ясности.Большое большое спасибо!Джени

РЕДАКТИРОВАТЬ: ОК, я решил большую часть своей проблемы до сих пор и, как выясняется, так как многие из этих вещей имеют склонность делать то, что я естьдействительно нужно понять, как заставить автозаполнение работать.То есть, у меня есть источник данных для моего текстового поля, но я не совсем уверен, как связать его с текстовым полем.У меня есть подпрограмма dojo.xhrPost, которая может обрабатывать захват значений.

Похоже на это ....

 dijit.byId('files_matching').getValue(),

Примеры автоматического заполнения додзё дают мне миллионы ссылок, и ни одна из них не оказывается полезной.Так что я полагаю, что мои вопросы перешли на ....1. Можете ли вы использовать автозаполнение в простом текстовом поле (я видел ссылки, которые говорят, что вы можете использовать его только в комбинированных полях)2. Есть ли где-нибудь ссылка, которая подробно описывает / показывает, как связать текстовое поле dojo с источником данных, используя dojo.xhrPost.Чувак, я так близок к решению этой проблемы, и у меня все еще есть пропасть передо мной.JW

1 Ответ

2 голосов
/ 07 декабря 2010

Трудно сказать наверняка, не видя ваш код, но если у вас его еще нет, я бы порекомендовал создать ItemFileReadStore или что-то подобное для начала. Таким образом, вы можете запросить это хранилище локально на клиенте, не имея запросов к серверу после каждого нажатия клавиши.

Это может выглядеть примерно так:

var file_store = new dojo.data.ItemFileReadStore({ data: {
  items: [{ name:"AAA_text" },
          { name:"AAA_text_1" },
          { name:"BBB_text_2" }]
}});

Если у вас это есть, вы можете вызывать функцию из события onChange вашего текстового ввода:

<input type="text" onchange="query_store(this.value);" />

И затем вы обрабатываете фактический запрос из функции, вызываемой из события onchange:

var query_store = function(search_for) {

  var my_query = { name: search_for+"*" }; // * for wildcard match

  completed = function(items, result){
    for(var i = 0; i < items.length; i++){
      var value = file_store.getValue(items[i], "name");
      alert(value); // Instead of alert, you can save the values to your div.
    }
  };

  file_store.fetch({ query: my_query, onComplete: completed });
}

Много полезной информации об этом можно найти здесь

Надеюсь, это хоть немного поможет.

...