Select2是否允许将"text"键的名称更改为其他内容?

bal*_*teo 15 json jquery-select2 angularjs-select2

我有以下Select2配置.

$scope.select2Options = {
    simple_tags: false,
    placeholder : "Search for a language",
    multiple : true,
    contentType: "application/json; charset=utf-8",
    minimumInputLength : 3,
    ajax : {
        url : "/bignibou/utils/findLanguagesByLanguageStartingWith.json",
        dataType : 'json',
        data : function(term) {
            return  {
                language : term
            };
        },
        results : function(data, page) {
            return {
                results :
                    data.map(function(item) {
                        return {
                            id : item.id,
                            text : item.description
                        };
                    }
            )};
        }
    }
};
Run Code Online (Sandbox Code Playgroud)

这允许我正确填充select2控件.

发送到服务器的JSON数组包含两个名为属性的对象:然而,当我要张贴包含标签(其中包括)整体形式使用Ajax时出现的问题idtext而服务器将需要iddescription.

从我的json看到片段:

"languages":[{"id":46,"text":"Français"},{"id":1,"text":"Anglais"}]
Run Code Online (Sandbox Code Playgroud)

select2是否允许将其名称更改为其他名称text

bal*_*teo 14

将我的js更改为以下排序问题:

function format(item) { return item.description; };

$scope.select2Options = {   
    simple_tags: false,
    placeholder : "Search for a language",
    multiple : true,
    contentType: "application/json; charset=utf-8",
    minimumInputLength : 3,
    data:{ text: "description" },
    formatSelection: format,
    formatResult: format,
    ajax : {
        url : "/bignibou/utils/findLanguagesByLanguageStartingWith.json",
        dataType : 'json',
        data : function(term) {
            return  {
                language : term
            };
        },
        results : function(data, page) {
            return {
                results :
                    data.map(function(item) {
                        return {
                            id : item.id,
                            description : item.description
                        };
                    }
            )};
        }
    }
};
Run Code Online (Sandbox Code Playgroud)

注意:必须使用Select2顶级属性data.


par*_*ent 6

这是在ui-select2上使用自定义id和文本属性所需配置的最低要求

$scope.clients: {
  data: [{ ClientId: 1, ClientName: "ClientA" }, { ClientId: 2, ClientName: "ClientB" }],
  id: 'ClientId',
  formatSelection: function (item) { return item.ClientName; },
  formatResult: function (item) { return item.ClientName; }
}
Run Code Online (Sandbox Code Playgroud)