2013-10-14 56 views
14

我有以下的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 
         }; 
        } 
      )}; 
     } 
    } 
}; 

这使我能够正确地填充select2控件。

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

看到片段从我的JSON:

"languages":[{"id":46,"text":"Français"},{"id":1,"text":"Anglais"}] 

是否选择2允许改变text别的东西的名字吗?

回答

12

改变我的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 
         }; 
        } 
      )}; 
     } 
    } 
}; 

注意:一是必须使用选择二顶级属性data

5

以下是配置neccesary的裸露铅丹对UI的选择2使用自定义的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; } 
}