2014-01-12 53 views
1

我试图让dhtmlx事件日历工作在我的angularjs webapp上。我仍然对这一切感到陌生,并且将日历与angularjs和php + mysql(从db获取事件)结合起来,但是没有那么多信息可以在这些组合中找到。3Angularjs不断给TypeError:无法读取未定义的属性'dhx_security'

此代码初始化日历:

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){ 
     scheduler.clearAll(); 
     scheduler.parse(collection, "json"); <-- UNDEFINED 
     }, 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.init($element[0], new Date(), "month"); 
     scheduler.load("agendaController.php"); 
    } 
    } 
}); 

在哪里我把箭头放在那里,它保持不变。不知道它为什么,我最后加载了正确的json数据,但即使日历是空的,它仍然可以工作。我真的不知道我在做什么错..

谢谢!

回答

3

我怀疑$ watch会在初始化之后触发一个事件,然后将值分配给data属性。

试试这个:

$scope.$watch($attrs.data, function(collection){ 
    if(collection) { 
    scheduler.clearAll(); 
    scheduler.parse(collection, "json"); 
    } 
}, true); 
相关问题