这是我的select2组件:

<select
    multiple
    id="e1"
    placeholder: "Select meeting participants"
    style="width:450px;"></select>


默认情况下,页面加载时,会进行ajax调用以将其与用户的联系人一起加载。

// Roster list remote call + handler =========================================>
transporter.ajax( "/transporter/app/roster/getAll", {},
    function( data )
    {
        var contacts = data.response.rlist.contactList;

        for( var i = 0; i < contacts.length; i++ )
        {
            var obj = new Object();
            obj[ 'id' ] = i;
            obj[ 'displayName' ] = contacts[i].displayName;
            obj[ 'contactName' ] = contacts[i].contactName;
            obj[ 'contactType' ] = contacts[i].contactType;
            obj[ 'avatar' ] = contacts[i].avatar;
            obj[ 'status' ] = contacts[i].status;

            roster.push( obj );
        }

        var ddl = document.getElementById( 'e1' );

        for ( var j = 0; j < roster.length; j++ )
        {
            var o = document.createElement( 'option' );
            o.value = roster[ j ].contactName;
            o.text = roster[ j ].displayName;
            ddl.appendChild( o );
        }
    });


这就是我要发生的事情:初始ajax调用加载并显示用户的本地联系人列表。用户可以看到,很容易选择经常邀请他们参加mtg的人。

问题:如果他们希望用户不在联系人中,则会看到“找不到匹配项”消息。

问题:然后Select2组件可以进行ajax调用以搜索更大的目录(在另一个端点)吗?

我的猜测是它不能,我将必须添加第二个Select2组件才能执行此操作。

有人知道答案吗?

感谢您提供任何有用的提示!

最佳答案

为什么还要打个第二个ajax电话呢?

/transporter/app/roster/getAll


如果返回“找不到用户”,则可以


不要返回“找不到用户”,而是进行更复杂的搜索
立即“像你说的那样第二个数据库”,实际上返回了一些东西
如果您确实想要第二个ajax调用,请执行以下操作

transporter.ajax( "/transporter/app/roster/getAll", {}, callBack);

function callBack( data ) {
    var contacts = data.response.rlist.contactList;

    if (contacts == null || contacts.length == 0) {
        // callback fillList, don't call this in an endless loop
        transporter.ajax( "/transporter/app/roster/searchAll", {}, fillList);

        return;
    }

    fillList( data );
}

function fillList( data ) {
    var contacts = data.response.rlist.contactList;

    for( var i = 0; i < contacts.length; i++ ) {
        var obj = new Object();
        obj[ 'id' ] = i;
        obj[ 'displayName' ] = contacts[i].displayName;
        obj[ 'contactName' ] = contacts[i].contactName;
        obj[ 'contactType' ] = contacts[i].contactType;
        obj[ 'avatar' ] = contacts[i].avatar;
        obj[ 'status' ] = contacts[i].status;

        roster.push( obj );
    }

    var ddl = document.getElementById( 'e1' );

    for ( var j = 0; j < roster.length; j++ ) {
        var o = document.createElement( 'option' );
        o.value = roster[ j ].contactName;
        o.text = roster[ j ].displayName;
        ddl.appendChild( o );
    }
}



我想您实际上已经回答了这个问题

关于javascript - 将1个数据集加载到选择元素中,然后过滤搜索另一个端点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17622044/

10-12 00:07
查看更多