簡體   English   中英

Twitter Typeahead.js庫是否限制為6個數據集?

[英]Is Twitter Typeahead.js library limited to 6 datasets?

我正在使用Twitter的Typeahed.js庫從單個輸入框中搜索數據庫中的多個數據集。

我目前正在使用6個數據集(請參閱下面的代碼),我想再添加1個。 我發現它不適用於第7個數據集(來自下面代碼的products dataset )。 在輸入框中鍵入搜索查詢時,它只會發送前六個數據集的GET AJAX請求,而忽略第七個數據集?

GET http://127.0.0.1/app/typeahead_orders.json?q=MSI-20mA
GET http://127.0.0.1/app/typeahead_invoices.json?q=MSI-20mA
GET http://127.0.0.1/app/typeahead_services.json?q=MSI-20mA%
GET http://127.0.0.1/app/typeahead_serials.json?q=MSI-20mA%
GET http://127.0.0.1/app/typeahead_users.json?q=MSI-20mA%
GET http://127.0.0.1/app/typeahead_licenses.json?q=MSI-20mA%

庫文檔正在傾倒,我還沒有看到它提到你可以使用的數據集數量的任何限制...

$('#search-query').typeahead([
    {
        name: 'orders',
        remote: base_url+"utilities/ajaxprocess/typeahead_orders.json?q=%QUERY",
        template: '<a href="'+base_url+'orders/view/{{order_id}}">{{value}} - Reference no.: {{reference_number}}</a>',
        header: '<h5 class="search-result-header"><i class="icon-shopping-cart"></i> Orders</h5>',
        engine: Hogan,
        limit: 6
    },
    {
        name: 'invoices',
        remote: base_url+"utilities/ajaxprocess/typeahead_invoices.json?q=%QUERY",
        template: '<a href="'+base_url+'invoices/view/{{invoice_id}}">{{invoice_number}} - {{company}}</a>',
        header: '<h5 class="search-result-header"><i class="icon-file"></i> Invoices</h5>',
        engine: Hogan,
        limit: 6
    },
    {
        name: 'services',
        remote: base_url+"utilities/ajaxprocess/typeahead_services.json?q=%QUERY%",
        template: '<a href="'+base_url+'services/view/{{rma_id}}">{{value}} - {{firstname}} {{lastname}}</a>',
        header: '<h5 class="search-result-header"><i class="icon-wrench"></i> RMA services</h5>',
        engine: Hogan,
        limit: 6
    },
    {
        name: 'serials',
        remote: base_url+"utilities/ajaxprocess/typeahead_serials.json?q=%QUERY%",
        template: '<a href="'+base_url+'serials/view/{{serial_id}}">{{value}} - {{product}} {{module_name}}</a>',
        header: '<h5 class="search-result-header"><i class="icon-barcode"></i> Serials</h5>',
        engine: Hogan,
        limit: 6
    },
    {
        name: 'users',
        remote: base_url+"utilities/ajaxprocess/typeahead_users.json?q=%QUERY%",
        template: '<a href="'+base_url+'users?f=1&filter_id={{user_id}}">{{firstname}} {{lastname}} - {{email}}</a>',
        header: '<h5 class="search-result-header"><i class="icon-user"></i> Users</h5>',
        engine: Hogan,
        limit: 6
    },
    {
        name: 'licenses',
        remote: base_url+"utilities/ajaxprocess/typeahead_licenses.json?q=%QUERY%",
        template: '<a href="'+base_url+'licenses?f=1&filter_id={{license_id}}">{{key}} - {{version}}</a>',
        header: '<h5 class="search-result-header"><i class="icon-lock"></i> Licenses</h5>',
        engine: Hogan,
        limit: 6
    },
    {
        name: 'products',
        remote: base_url+"utilities/ajaxprocess/typeahead_products.json?q=%QUERY%",
        template: '<a href="'+base_url+'products?f=1&filter_id={{product_id}}">{{code}} - {{name}}</a>',
        header: '<h5 class="search-result-header"><i class="icon-briefcase"></i> Products</h5>',
        engine: Hogan,
        limit: 6
    }
]).on('typeahead:selected', function($e, data) {
    window.location = data.url;
});

好吧我明白了。 它不受限制,但默認的最大並行請求是6.來自typeahead.js文檔:

maxParallelRequests – The max number of parallel requests typeahead.js can have pending. Defaults to 6.

所以我增加了它,它的工作原理。 這是最終更正的代碼:

$('#search-query').typeahead([
    {
        name: 'orders',
        remote: {
            url: base_url+"utilities/ajaxprocess/typeahead_orders.json?q=%QUERY",
            maxParallelRequests: 8,
        },
        template: '<a href="'+base_url+'orders/view/{{order_id}}">{{value}} - Reference no.: {{reference_number}}</a>',
        header: '<h5 class="search-result-header"><i class="icon-shopping-cart"></i> Orders</h5>',
        engine: Hogan,
        limit: 6
    },
    {
        name: 'invoices',
        remote: {
            url: base_url+"utilities/ajaxprocess/typeahead_invoices.json?q=%QUERY",
            maxParallelRequests: 8,
        },
        template: '<a href="'+base_url+'invoices/view/{{invoice_id}}">{{invoice_number}} - {{company}}</a>',
        header: '<h5 class="search-result-header"><i class="icon-file"></i> Invoices</h5>',
        engine: Hogan,
        limit: 6
    },
    {
        name: 'services',
        remote: {
            url: base_url+"utilities/ajaxprocess/typeahead_services.json?q=%QUERY%",
            maxParallelRequests: 8,
        },
        template: '<a href="'+base_url+'services/view/{{rma_id}}">{{value}} - {{firstname}} {{lastname}}</a>',
        header: '<h5 class="search-result-header"><i class="icon-wrench"></i> RMA services</h5>',
        engine: Hogan,
        limit: 6
    },
    {
        name: 'serials',
        remote: {
            url: base_url+"utilities/ajaxprocess/typeahead_serials.json?q=%QUERY%",
            maxParallelRequests: 8,
        },
        template: '<a href="'+base_url+'serials/view/{{serial_id}}">{{value}} - {{product}} {{module_name}}</a>',
        header: '<h5 class="search-result-header"><i class="icon-barcode"></i> Serials</h5>',
        engine: Hogan,
        limit: 6
    },
    {
        name: 'users',
        remote: {
            url: base_url+"utilities/ajaxprocess/typeahead_users.json?q=%QUERY%",
            maxParallelRequests: 8,
        },
        template: '<a href="'+base_url+'users?f=1&filter_id={{user_id}}">{{firstname}} {{lastname}} - {{email}}</a>',
        header: '<h5 class="search-result-header"><i class="icon-user"></i> Users</h5>',
        engine: Hogan,
        limit: 6
    },
    {
        name: 'licenses',
        remote: {
            url: base_url+"utilities/ajaxprocess/typeahead_licenses.json?q=%QUERY%",
            maxParallelRequests: 8,
        },
        template: '<a href="'+base_url+'licenses?f=1&filter_id={{license_id}}">{{key}} - {{version}}</a>',
        header: '<h5 class="search-result-header"><i class="icon-lock"></i> Licenses</h5>',
        engine: Hogan,
        limit: 6
    },
    {
        name: 'products',
        remote: {
            url: base_url+"utilities/ajaxprocess/typeahead_products.json?q=%QUERY%",
            maxParallelRequests: 8,
        },
        template: '<a href="'+base_url+'products?f=1&filter_id={{product_id}}">{{code}} - {{name}}</a>',
        header: '<h5 class="search-result-header"><i class="icon-briefcase"></i> Products</h5>',
        engine: Hogan,
        limit: 6
    },
    {
        name: 'tasks',
        remote: {
            url: base_url+"utilities/ajaxprocess/typeahead_tasks.json?q=%QUERY%",
            maxParallelRequests: 8,
        },
        template: '<a href="'+base_url+'tasks?f=1&filter_id={{task_id}}">#{{task_id}} - {{description}}</a>',
        header: '<h5 class="search-result-header"><i class="icon-briefcase"></i> Tasks</h5>',
        engine: Hogan,
        limit: 6
    }
]).on('typeahead:selected', function($e, data) {
    window.location = data.url;
});

我沒有聽說過這樣的限制,我想知道前6個可能滿足的最大返回結果數量是多少?

快速測試將基本上強制幾個遠程查詢始終不返回任何內容。

如果您的第七次搜索開始受到打擊,那么可以解釋它。

如果有人遇到這個老問題,並希望將maxPendingRequests設置增加到6以上(或使其更小),請參閱我最近提交給維護的typeahead分支的PR

打開Twitter typeahead.js文件。

搜索:“maxPendingRequests = 6”

而不是6只要把你想要的任何價值。

現在我可以看到超過6個請求並行運行。

這對我來說可以。

不要去'maxParallelRequests'屬性它根本不起作用......

我相信它是最終解決方案.....

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM