Angularjs 角度传感器中的dhtmlx调度程序冲突检测
我已经遵循了教程,使调度器与angular一起工作。不过我有个问题。 人们只能通过我自己的表单添加事件,而不能通过调度程序本身,因为他们必须选择要添加到事件中的图像 但这使得scheduler.collision无法工作。我仍然可以在相同的时间跨度内添加事件。另外,如果我想覆盖checkCollision方法,我会在控制台中得到一个错误,该方法未知 我真的不知道如何使两者一起工作,因为我是新的角度 我的计划程序指令:Angularjs 角度传感器中的dhtmlx调度程序冲突检测,angularjs,collision,dhtmlx-scheduler,Angularjs,Collision,Dhtmlx Scheduler,我已经遵循了教程,使调度器与angular一起工作。不过我有个问题。 人们只能通过我自己的表单添加事件,而不能通过调度程序本身,因为他们必须选择要添加到事件中的图像 但这使得scheduler.collision无法工作。我仍然可以在相同的时间跨度内添加事件。另外,如果我想覆盖checkCollision方法,我会在控制台中得到一个错误,该方法未知 我真的不知道如何使两者一起工作,因为我是新的角度 我的计划程序指令: myAppProfile.directive('dhxScheduler',
myAppProfile.directive('dhxScheduler', function() {
return {
restrict: 'A',
scope: false,
transclude: true,
template:'<div class="dhx_cal_navline" ng-transclude></div><div class="dhx_cal_header">
</div><div class="dhx_cal_data"></div>',
link:function ($scope, $element, $attrs, $controller){
//default state of the scheduler
if (!$scope.scheduler)
$scope.scheduler = {};
$scope.scheduler.mode = $scope.scheduler.mode || "month";
$scope.scheduler.date = $scope.scheduler.date || new Date();
//watch data collection, reload on changes
$scope.$watch($attrs.data, function(collection){
if(collection) {
scheduler.clearAll();
scheduler.parse(collection, "json");
}
}, true);
//watch mode and date
$scope.$watch(function(){
return $scope.scheduler.mode + $scope.scheduler.date.toString();
}, function(nv, ov) {
var mode = scheduler.getState();
if (nv.date != mode.date || nv.mode != mode.mode)
scheduler.setCurrentView($scope.scheduler.date, $scope.scheduler.mode);
}, true);
//size of scheduler
$scope.$watch(function() {
return $element[0].offsetWidth + "." + $element[0].offsetHeight;
}, function() {
scheduler.setCurrentView();
});
//styling for dhtmlx scheduler
$element.addClass("dhx_cal_container");
//init scheduler
scheduler.config.xml_date="%Y-%m-%d %H:%i";
scheduler.config.dblclick_create = false;
scheduler.config.drag_create = false;
scheduler.config.drag_move = true;
scheduler.config.readonly = false;
scheduler.config.touch= true;
scheduler.config.collision_limit = 1; //this does not give an error but does not work
scheduler.attachEvent("onEventLoading", function(ev){ //this gives error
return scheduler.checkCollision(ev);
});
scheduler.init($element[0], new Date(), "month");
scheduler.load("agendaController.php", "json");
var dp = new dataProcessor("agendaController.php");
dp.init(scheduler);
}
}
});
确保正在加载ext/dhtmlxscheduler_limit.js,如果没有此文件,将不会定义checkCollision方法 此外,使用onEventLoading中的checkCollision非常昂贵(您将有n*n*n/4个检查)。在将数据发送到服务器端之前,您可以使用类似next的代码
var id = scheduler.addEvent({ event object details here })
if (scheduler.getEvent(id)){
//there is no collision, server side saving data call can be initiated
} else {
//collision detected, event *not added*, show some message for the user
}
我在标题中添加了该文件,但仍然找不到checkCollision:“UncaughtTypeError:Object#没有方法‘checkCollision’”。你会把代码放在哪里来添加事件?我在angular还是新手,我有scheduler指令和addEventController,但是在addEventController中我无法访问scheduler。你能给我指一下正确的方向吗?谢谢我编写了自己的服务器端代码,检查数据库中是否存在事件,如果存在,则向用户发送消息。
var id = scheduler.addEvent({ event object details here })
if (scheduler.getEvent(id)){
//there is no collision, server side saving data call can be initiated
} else {
//collision detected, event *not added*, show some message for the user
}