使用ajax数据源设置select2的初始值

时间:2017-04-11 12:20:18

标签: jquery-select2 jquery-select2-4

我使用select2指定网站内部邮件系统的收件人。有用户,他们可以互相发送消息。他们可以通过用户名搜索其他用户。

我使用以下配置:

this.$select2.select2({
  multiple: true,
  ajax: {
    url: "/userSearch",
    dataType: "json",
  },
  templateResult: function(data) {
    var user = new SomeComplexUserModel(data);
    var $div = $(<div></div>");
    $div.append("<img src='"+user.image.readPaths().crop+"'>");
    $div.append("<span>"+user.fullName()+"</span>");
    return $div;
  },
  templateSelection: ..the same as templateResult..

现在我想为此设置初始值。怎么做?我有页面加载时必须选择的用户的ID列表。我向/userSearch发出单独的请求并接收数据。然后我试图以某种方式将这些数据推送到select2。

我无法创建本机var opt = new Option(text,value); select.append(opt),因为此案例templateSelection仅从选项中获取id和text,它不能仅基于此数据构建用户模型。它不会向用户显示头像。

我尝试使用select2:select触发{originalEvent:null,data:$.extend(ajaxResult,{selected:true,disabled:false,element:null},_type:"select")}事件,但似乎无法正常使用此方向。它发出事件但未订阅它们。

我也尝试在select2初始化之后设置this.$select2.val(ajaxData); this.$select2.trigger('change'),但它也不起作用。

0 个答案:

没有答案