我使用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')
,但它也不起作用。