Yii2 kartik typeahead - получить количество предложений

Я использую виджет kartik typeahead для Yii2 в представлении:

echo \kartik\typeahead\Typeahead::widget([
    'name'          => 'serial_product',
    'options'       => [
        'placeholder' => 'Filter as you type ...',
        'autofocus'   => "autofocus"
    ],
    'scrollable'    => TRUE,
    'pluginOptions' => [
        'highlight' => TRUE,
        'minLength' => 3
    ],
    'dataset'       => [
        [
            'remote' => Url::to(['transfers/ajaxgetinventoryitemsnew']) . '?search=%QUERY',
            'limit'  => 10
        ]
    ],
    'pluginEvents'  => [
        "typeahead:selected" => "function(obj, item) { add_item(item.id); return false;}",
    ],
]);

Как я могу получить количество загруженных предложений после извлечения удаленного набора данных для выполнения функции javascript, например:

displaynumber(NUMBEROFSUGGESTIONS);

person Andreas Hinderberger    schedule 14.04.2015    source источник


Ответы (1)


После проверки источника виджета kartiks я пришел к следующему решению:

echo \kartik\typeahead\Typeahead::widget([
    'name'          => 'serial_product',
    'options'       => [
        'placeholder' => 'Filter as you type ...',
        'autofocus'   => "autofocus",
        'id'          => 'serial_product'
    ],
    'scrollable'    => TRUE,
    'pluginOptions' => [
        'highlight' => TRUE,
        'minLength' => 3
    ],
    'dataset'       => [
        [
            'remote' => [
                'url'  => Url::to(['transfers/ajaxgetinventoryitemsnew']) . '?search=%QUERY',
                'ajax' => ['complete' => new JsExpression("function(response)
                    {
                        jQuery('#serial_product').removeClass('loading');
                        checkresult(response.responseText);
                    }")]
            ],
            'limit'  => 10
        ]
    ],
    'pluginEvents'  => [
        "typeahead:selected" => "function(obj, item) { checkresult2(item); return false;}",
    ],
]);

где response.responseText содержит ответ от сервера (json).

function checkresult(response) {
    var arr = $.parseJSON(response);
    console.log(arr.length);
}

С помощью этой функции я могу получить количество предложений, доставленных с сервера.

person Andreas Hinderberger    schedule 14.04.2015