Автозаполнение Typeahead: использование шаблонов

Я играю с опережением текста и не могу получить простого доказательства работоспособности концепции.

http://jsfiddle.net/LHeYy/

В приведенном ниже коде я в основном пытаюсь создать автозаполнение, используя 2 поля. Самое безумное, что я могу автозаполнить год (поле значения), но не ключевое поле. Кто-нибудь знает, почему?

$('#inputBox').typeahead([
{
    name: 'best-picture-winners',
    local: [{key: 'some key', value:2014}, {key: 'some key 2', value:2015}, {key: 'some key4', value:2016}],
    template: '<p><strong>{{key}} {{value}}</strong></p>',
    engine: Hogan,
    valueKey: 'value'
}
]);

person webber    schedule 24.01.2014    source источник


Ответы (1)


По умолчанию автозаполнение выполняется только для свойства value. Если вы хотите, чтобы он проверял другие значения, установите свойство tokens, которое содержит массив однословных токенов.

См. https://github.com/twitter/typeahead.js#datum.

И вот ваша обновленная скрипка: http://jsfiddle.net/LHeYy/1/

$('#inputBox').typeahead([
{
    name: 'best-picture-winners',
    local: [
        {key: 'some key', value: 2014, tokens: ['some', 'key']},
        {key: 'some key 2', value: 2015, tokens: ['some', 'key', '2']},
        {key: 'some key4', value: 2016, tokens: ['some', 'key4']}
    ],
    template: '<p><strong>{{key}} {{value}}</strong></p>',
    engine: Hogan,
    valueKey: 'value'
}
]);
person Travesty3    schedule 24.01.2014
comment
Спасибо! Есть идеи, почему он частично не соответствует токенам? Например, если я ввожу ey, он должен соответствовать токенам ключей. - person webber; 24.01.2014
comment
Сопоставитель не сопоставляет токены таким образом. Он соответствует только токенам, начинающимся с введенного вами значения. Раньше был способ определить настраиваемый сопоставитель, , но автор удалил эту функцию, утверждая, что он был недоделанным, и указал, что планировал добавить его в будущем выпуске, как только он будет более тщательно спланирован. - person Travesty3; 24.01.2014
comment
есть идеи о том, как заставить Hogan работать над Typeahead 0.10+? Я попробовал Hogan.compile(...), но это не сработало. См. stackoverflow.com/questions / 24727534 /, если у вас есть решение. Спасибо! - person isapir; 14.07.2014
comment
@Igal: Извините, я вообще не обновил свою версию Typeahead. Похоже, вы нашли решение :-) - person Travesty3; 14.07.2014
comment
@ Travesty3 спасибо за ответ. Я обновил свое решение, поскольку Function.prototype.bind () не поддерживается старыми браузерами. - person isapir; 14.07.2014