Как можно настроить dojo.FilteringSelect для соответствия значениям подстановочных знаков? - PullRequest
5 голосов
/ 10 мая 2010

Ниже приведен пример фильтрации, заполненной пользовательскими данными. Моя цель - выполнить сопоставление по отображаемым значениям. например, если пользователь вводит «сын», выпадающие совпадения будут «homer simpSON» и «carl calSON». По умолчанию совпадение будет только в начале метки.

Я попытался изменить dijit.byId ('userselect'). SearchAttr, но установка его на что угодно, кроме строки, вызывает ошибочное поведение.

<input id="userselect">

<script type="text/javascript">
    dojo.require("dijit.form.FilteringSelect");
    dojo.require("dojo.data.ItemFileReadStore");

    var user_data = {
        "itentifier":"user_id",
        "label":"label",
        "items":[
            {"first_name":"Waylon","last_name":"Smithers","label":"Waylon Smithers","user_id":7}
            ,{"first_name":"Carl","last_name":"Carlson","label":"Carl Carlson","user_id":6}
            ,{"first_name":"Homer","last_name":"Simpson","label":"Homer Simpson","user_id":4}
            ,{"first_name":"Lenny","last_name":"Leonard","label":"Lenny Leonard","user_id":5}
            ,{"first_name":"Montgomery","last_name":"Burns","label":"Montgomery Burns","user_id":8}
            ]
        };

    dojo.addOnLoad(function() {
        var userStore = new dojo.data.ItemFileReadStore({
            //url: "/user/lookup",
            data: user_data
        });
        var filteringSelect = new dijit.form.FilteringSelect({
            id: "userselect",
            name: "userselect",
            store: userStore,
            searchAttr: 'label' //["first_name", "last_name", "oasis"]
        },
        "userselect");
    });
</script>

Ответы [ 2 ]

5 голосов
/ 31 мая 2013

Вам необходимо установить queryExpr и установить autoComplete на false

var filteringSelect = new dijit.form.FilteringSelect({
  id: "userselect",
  name: "userselect",
  store: userStore,
  searchAttr: 'label',
  queryExpr: '*${0}*',
  autoComplete: false
},"userselect");

Документация Dojo для queryExpr:

Указывает, какой запрос отправляется в хранилище данных, исходя из того, что пользователь набрал. Изменение этого выражения изменит ли результаты - это только точные совпадения, совпадение «начиная с» и т. д. шаблон выражения запроса dojo.data. $ {0} будет заменен на Пользовательский текст. * используется для подстановочных знаков.

${0}* означает «начинается с»
*${0}* означает «содержит»
${0} означает «есть»

0 голосов
/ 10 мая 2010

Посмотрите на queryExpr

...