AngularUI select2 AJAX设置通过模型

AngularUI select2 AJAX set via model

本文关键字:模型 设置 select2 AJAX AngularUI      更新时间:2023-09-26

我正在使用AngularUI的ui-select2指令与AJAX。

下面是我的视图:

<label>Group: <input ng-model="group" ui-select2="select2GroupConfig"></label>

下面是我的模型:

$scope.select2GroupConfig = {
    ajax: {
        url: 'theURL',
        data: function (term, page)
        {
            return { q: term };
        },
        results: function (data, page)
        {
            return { results: data };
        }
    }
};

运行正常


我的问题:我如何通过模型更新值?

我试着:

$scope.group = 'some group';

我还尝试使用一个对象:

$scope.group = { id: 32, text: 'some group'};

但是这也不行

如何通过模型更新使用AJAX的select2 ?

原来你可以设置它为一个对象,但只有在ui-select2运行后;我试着给它一个初始值。

因此,不能使用常规模型,而必须使用select2initSelection函数:

$scope.group = 'Dummy Content';
$scope.select2GroupConfig.initSelection = function ( el, fn ) {
    fn({ id: 2, text: 'Some group' });
}

注意你必须给输入一个初始值,否则initSelection永远不会被调用。这就是为什么我只是把它设置为一些虚拟内容。


这个可以工作,但是感觉像一个hack。

有谁有更好的主意吗?

如果你有initSelection设置,你可以只传递ID和指令将拉起整个行对象。

这也将允许您设置的值,当页面加载到仅为ID。

如果您不想使用initSelection,您可以将整个行(对象)设置为值,然后select2将相应地更新。这完全取决于你的用例。