事件对象无法呈现或范围不广播?

时间:2015-12-31 10:53:08

标签: javascript angularjs asynchronous ionic-framework ionic

我正在尝试使用离子日历通过$scope.loadEvents方法渲染我的事件。但是,它不会在我的日历上呈现。

使用的插件链接: https://github.com/twinssbc/Ionic-Calendar

我不确定这是因为我的事件未在getEvent()函数中正确返回,还是由于在错误的位置插入$scope.$broadcast('eventSourceChanged',$scope.eventSource);(如插件文档所示)。

这是我的控制器文件中的代码:

    $scope.loadEvents = function () {
        $scope.calendar.eventSource = getEvents();
        $scope.$broadcast('eventSourceChanged',$scope.eventSource);

    };

    function getEvents(object){

      var deferred = $q.defer();

        TimeSlotsModel.all()
            .then(function (result) {
                vm.data = result.data.data;

                var events = [];

                 angular.forEach(vm.data, function(value,key) {

                    var eventName = value.name;
                    var startDate = new Date(value.startDate);
                    var endDate = new Date(value.endDate);

                    var selectedStartingTime =new Date(value.startTime * 1000 );
                    var selectedEndingTime = new Date(value.endTime * 1000);

                    //timing is not right, needs fixing
                    startTime = new Date(startDate.getFullYear(), startDate.getMonth(), startDate.getDate(),selectedStartingTime.getHours(), selectedStartingTime.getUTCMinutes());
                    endTime = new Date(endDate.getFullYear(), endDate.getMonth(), endDate.getDate(),selectedEndingTime.getUTCHours(), selectedEndingTime.getUTCMinutes());                     
                    // console.log(startTime);
                    events.push({
                        title: 'Event -' + eventName,
                        startTime: startTime,
                        endTime: endTime,
                        allDay: false

                    });
            // console.log(eventName);
            console.log(events);
            // console.log(value);
            // console.log(key);
            // console.log(value);

             //value is the object!!
            })

            deferred.resolve(events);



            })
            return deferred.promise;

         }

1 个答案:

答案 0 :(得分:0)

我已设法通过直接将events数组分配给$ scope.calendar.eventSource来解决此问题:

    function getEvents(object){

    TimeSlotsModel.all()
        .then(function (result) {
            vm.data = result.data.data;

            var events = [];

             angular.forEach(vm.data, function(value,key) {

                var eventName = value.name;
                var startDate = new Date(value.startDate);
                var endDate = new Date(value.endDate);

                var selectedStartingTime =new Date(value.startTime * 1000 );
                var selectedEndingTime = new Date(value.endTime * 1000);

                //timing is not right, needs fixing
                startTime = new Date(startDate.getFullYear(), startDate.getMonth(), startDate.getDate(),selectedStartingTime.getUTCHours(), selectedStartingTime.getUTCMinutes());
                endTime = new Date(endDate.getFullYear(), endDate.getMonth(), endDate.getDate(),selectedEndingTime.getUTCHours(), selectedEndingTime.getUTCMinutes());                     
                // console.log(startTime);
                events.push({
                    title: 'Event -' + eventName,
                    startTime: startTime,
                    endTime: endTime,
                    allDay: false
                });

                $scope.calendar.eventSource= events;



        console.log(events);
        // console.log(value);




         //value is the object!!
        })
         return events;

        })

     }

结果证明这不是文档中$ scope。$ broadcast的问题。