Jquery 如何在laravel中使用AJAX数据时设置Select2的选定值?

Jquery 如何在laravel中使用AJAX数据时设置Select2的选定值?,jquery,ajax,laravel,tags,select2,Jquery,Ajax,Laravel,Tags,Select2,Controller@Update //Update $course = Course::findOrFail($id); $course->name = Input::get('name'); $course->code = Input::get('code'); $course->credits = Input::get('credits'); $course->description = Input::get('description');

Controller@Update

  //Update
  $course = Course::findOrFail($id);
  $course->name = Input::get('name');
  $course->code = Input::get('code');
  $course->credits = Input::get('credits');
  $course->description = Input::get('description');

  $course->tags()->sync(Input::get('tags')); // Use of sync method

  //return [$course];
  $course->save();
  //Redirect
  Session::flash('message', 'Successfully edited the course : '.$course->name);
  return $this->show($course->code);
<pre>
<div class="form-group">
     {{Form::label('tags', 'Tag')}}
     {{Form::select('tags[]',[],null,array('multiple'=>'multiple','name'=>'tags[]','id'=>'tag_list','class'=>'form-control'))}}
   </div>
</pre>
HTML


作为一个毕业生项目,我正在研究课程管理系统,简言之,课程和标签之间存在多对多关系,我想使用Select2包的同步方法,以方便的方式从课程中附加和取消附加标签,但我找不到在使用ajax数据时设置Select2的选定值的方法。如果有人能提供一个简单的指南来指导如何做到这一点,我将不胜感激:D.

在类似的情况下,我只需要避免使用表单生成器

function initSelect2(control, key, value){
    var data = {
        id: key,
        text: value
    };
    var initOption = new Option(data.text, data.id, false, false);
    control.append(initOption);
    control.val(value).trigger('change');
}

@foreach($course->tags as$tag)
{{$tag->name}
@endforeach

在类似的情况下,我不得不避免使用表单生成器

function initSelect2(control, key, value){
    var data = {
        id: key,
        text: value
    };
    var initOption = new Option(data.text, data.id, false, false);
    control.append(initOption);
    control.val(value).trigger('change');
}

@foreach($course->tags as$tag)
{{$tag->name}
@endforeach

由于这是一个Ajax请求,因此控件中没有填充数据。 在Select2 v.4>中,如果您不想遵循官方文档的建议,可以使用类似于此JS函数的功能来设置初始值

initSelect2( $('#tags'), '{{ $tag->id }}', '{{ $tag->name }}');
然后打电话


要设置默认值/初始值

,因为这是一个Ajax请求,所以控件中没有填充数据。
initSelect2( $('#tags'), '{{ $tag->id }}', '{{ $tag->name }}');
在Select2 v.4>中,如果您不想遵循官方文档的建议,可以使用类似于此JS函数的功能来设置初始值

initSelect2( $('#tags'), '{{ $tag->id }}', '{{ $tag->name }}');
然后打电话


要设置默认值/初始值

问题在于,当您将ajax数据与Select2一起使用时,它会删除所有已写入的选项,并使用ajax请求的json响应重新写入这些选项。我也想使用这种方法,但现在的问题是templateResult和templateSelection返回undefined:undefined您知道吗关于如何编写选项标签,以便Select2可以提取所需的数据?我以前没有使用自定义模板。但是根据select2文档,它应该是相同的。使用预先选择的选项检查ajax示例,不要忘记检查模板的源代码。我还将尝试稍后对其进行测试问题是,当您将ajax数据与Select2一起使用时,它会删除所有已写入的选项,并使用ajax请求的json响应重新写入这些选项。我也希望使用这种方法,但现在的问题是templateResult和templateSelection返回undefined:undefined您对这些选项有何看法如何编写选项标记以便Select2可以提取所需的数据?我以前没有使用自定义模板。但是根据select2文档,它应该是相同的。使用预先选择的选项检查ajax示例,不要忘记检查模板的源代码。稍后我还会尝试测试它
initSelect2( $('#tags'), '{{ $tag->id }}', '{{ $tag->name }}');