我一整天都在想办法解决这个问题。我有一个日历,上面有员工的资源,加载后一切都很好。我正在尝试做的是过滤员工,以便使用外部过滤器根据用户选择只显示所选的内容。
如果需要,我可以创建某种jQuery函数并使其工作。但看起来并不理想,也不确定它能扩展到什么程度。
这就是我现在所拥有的,就像我说的那样,可以加载:
resources: function(dataInfo, successCallback, failureCallback) {
successCallback(data);
});
},
数据是员工的对象
我有一个侧边菜单,其中有一个,两个或所有员工的多个选择。
<div class="col-md-12">
<div class="form-group">
<h5> @lang('modules.tasks.assignTo')</h5>
<select class="select2 select2-multiple user_id" multiple="multiple"
data-placeholder="@lang('modules.tasks.chooseAssignee')" name="user_id[]" id="user_id">
<option value="all" selected="selected">@lang('app.all')</option>
@foreach($crew_leaders as $employee)
@php $selected = ''; @endphp
<option {{ $selected }} value="{{ $employee->id }}">{{ ucwords($employee->first_name) ?? '---' }} {{ ucwords($employee->last_name) ?? '---' }} </option>
@endforeach
</select>
</div>
</div>
因此,在select上,它需要更新员工资源。为了更清晰起见,我添加了一张图片。
提前感谢
发布于 2021-08-30 22:59:26
让它工作,不确定它是否是最好的解决方案,但它是有效的。
在Calendar类中我添加了
var calendar = new FullCalendar.Calendar(calendarEl, {
.....
resourceAreaWidth: "22%",
resources: function(dataInfo, successCallback, failureCallback) {
var sel = $('#user_id').val();
if(sel != null && sel.length > 0)
{
if(sel.includes('all') === true && sel.length == 1){
successCallback(getCrew(['all']));
}else{
successCallback(getCrew(sel));
}
}
},
resourceOrder: 'title'
...
});
然后创建了一个函数getCrew()
function getCrew(data=[]){
var url = "{{ route('admin.activities.all-activities.filterActivities') }}";
var crew = '';
$.easyAjax({
type: 'GET',
url: url,
async: false, //<-- Make sure this is set to false
data: {data:data, type:'crew'},
success: function (response) {
if (response.status == "success") {
// //return data to post to resorce
crew = response;
}
}
});
return crew;
}
如果有人有更好的解决方案,请让我知道。
https://stackoverflow.com/questions/68960798
复制相似问题