无法在promises成功

时间:2017-03-15 04:28:26

标签: javascript jquery promise

我想在承诺中使用日历元素"然后"块,我有一个动态数据,并希望在calander属性中使用它,但我面临的主要问题是在promises中使用时不会生成calander。当我使用它时我们的工作(静态值)。我不知道是什么问题。
为了初始目的,我在承诺中使用静态值作为calander。但我仍然没有得到什么问题。

var promise = new Promise(function(resolve, reject) {
    jQuery.ajax({
            url:'<?php echo site_url();?>/MyController/ajax_cal',
            type:'POST',
            dataType: "JSON",
            success:function(results) {
                resolve(results); 
                //reject(Error(request.statusText)); // status is not 200 O K, so reject
            }
        });
  });
promise.then(function(data) {
      alert(data.id);   // get the data from promises 

      // calander is not generated BUT work when use outside the then block
          <!-- Calander Module starts-->
    var calendar = $('#calendar').calendar({
            events_source: [
                {
                    "id": '123',
                    "title": 'Hello World',
                    "url": '#',
                    "class": 'event-success',
                    "start": '1362938400000',
                    "end": '1363197686300' // Milliseconds
                }

            ],
            view: 'month',
            tmpl_path: '<?php echo base_url();?>asserts/bootstrap_calender/tmpls/',
            tmpl_cache: false,
            day: '2017-03-15',
            onAfterEventsLoad: function(events) {
                if(!events) {
                    return;
                }
                var list = $('#eventlist');
                list.html('');

                $.each(events, function(key, val) {
                    $(document.createElement('li'))
                        .html('<a href="' + val.url + '">' + val.title + '</a>')
                        .appendTo(list);
                });
            },
            onAfterViewLoad: function(view) {
                $('.page-header h3').text(this.getTitle());
                $('.btn-group button').removeClass('active');
                $('button[data-calendar-view="' + view + '"]').addClass('active');
            },
            classes: {
                months: {
                    general: 'label'
                }
            }
    }); 
    (function($) {
    $('.btn-group button[data-calendar-nav]').each(function() {
            var $this = $(this);
            $this.click(function() {
                calendar.navigate($this.data('calendar-nav'));
            });
        });

        $('.btn-group button[data-calendar-view]').each(function() {
            var $this = $(this);
            $this.click(function() {
                calendar.view($this.data('calendar-view'));
            });
        });

        $('#first_day').change(function(){
            var value = $(this).val();
            value = value.length ? parseInt(value) : null;
            calendar.setOptions({first_day: value});
            calendar.view();
        });

        $('#language').change(function(){
            calendar.setLanguage($(this).val());
            calendar.view();
        });

        $('#events-in-modal').change(function(){
            var val = $(this).is(':checked') ? $(this).val() : null;
            calendar.setOptions({modal: val});
        });
        $('#format-12-hours').change(function(){
            var val = $(this).is(':checked') ? true : false;
            calendar.setOptions({format12: val});
            calendar.view();
        });
        $('#show_wbn').change(function(){
            var val = $(this).is(':checked') ? true : false;
            calendar.setOptions({display_week_numbers: val});
            calendar.view();
        });
        $('#show_wb').change(function(){
            var val = $(this).is(':checked') ? true : false;
            calendar.setOptions({weekbox: val});
            calendar.view();
        });
        $('#events-modal .modal-header, #events-modal .modal-footer').click(function(e){
            //e.preventDefault();
            //e.stopPropagation();
        });
    }(jQuery)); 

    <!-- Calander Module ends-->

}, function(error) {
    console.log('Promise rejected.');
    console.log(error.message);
  });

0 个答案:

没有答案