Jimmyt1988
Jimmyt1988

Reputation: 21126

Twitter jQuery typeahead - How to remove the cache

I made a query like this... and first time, it ran the filter... cool, and it worked...

But now there are more entries, and it seems to be running off of cache. How do I force it to stop using the cache?

var countries = new Bloodhound({
    datumTokenizer: function (d) { return Bloodhound.tokenizers.whitespace(d.name); },
    queryTokenizer: Bloodhound.tokenizers.whitespace,
    limit: 10,
    prefetch: {
        url: Url + '/Country/JsonList',
        filter: function (list) {
            return $.map(list, function (country) { return { name: country.Name }; });
        }
    }
});

countries.initialize();

$('.countries.typeahead').typeahead(null, {
    displayKey: 'name',
    source: countries.ttAdapter()
});

Upvotes: 7

Views: 12596

Answers (2)

Jimmyt1988
Jimmyt1988

Reputation: 21126

Add the ttl property to the filter... and set it to 1 not 0.

var countries = new Bloodhound({
    datumTokenizer: function (d) { return Bloodhound.tokenizers.whitespace(d.name); },
    queryTokenizer: Bloodhound.tokenizers.whitespace,
    limit: 10,
    prefetch: {
        ttl: 1,
        url: Url + '/Country/JsonList',
        filter: function (list) {
            return $.map(list, function (country) { return { name: country.Name }; });
        }
    }
});

countries.initialize();

$('.countries.typeahead').typeahead(null, {
    displayKey: 'name',
    source: countries.ttAdapter()
});

https://github.com/twitter/typeahead.js/blob/master/doc/bloodhound.md

Upvotes: 8

Yahya Uddin
Yahya Uddin

Reputation: 28841

I think this is better than the accepted answer:

var countries = new Bloodhound({
    datumTokenizer: function (d) { return Bloodhound.tokenizers.whitespace(d.name); },
    queryTokenizer: Bloodhound.tokenizers.whitespace,
    limit: 10,
    prefetch: {
        url: Url + '/Country/JsonList',
        filter: function (list) {
            return $.map(list, function (country) { return { name: country.Name }; });
        },
        cache: false //NEW!
    }
});

countries.initialize();

$('.countries.typeahead').typeahead(null, {
    displayKey: 'name',
    source: countries.ttAdapter() //NOTE: .ttAdapter() is deprecated and will be removed in V1
});

Upvotes: 23

Related Questions