2012-04-17 9 views
0

동일한 JS 파일 내에서 "eventNew"함수를 호출 할 수 있는지 알고 싶습니다. 다른 함수에서 "eventNew"함수에 액세스하려고하기 때문에.내에서 JavaScript 함수 이벤트 호출

당신의 eventNew 기능은 익명의 객체에 정의되어
$calendar.weekCalendar({ 
    displayOddEven: true, 
    timeslotsPerHour: 4, 
    allowCalEventOverlap: true, 
    overlapEventsSeparate: true, 
    firstDayOfWeek: 1, 
    businessHours: { start: 1, end: 24, limitDisplay: true }, 
    daysToShow: 7, 
    switchDisplay: { '1 day': 1, '3 next days': 3, 'work week': 5, 'full week': 7 }, 
    title: function (daysToShow) { 
     return daysToShow == 1 ? '%date%' : '%start% - %end%'; 
    }, 
    height: function ($calendar) { 
     return $(window).height() - $("h1").outerHeight() - 1; 
    }, 
    eventNew: function (calEvent, $event) { 
     var $dialogContent = $("#event_edit_container"); 
     resetForm($dialogContent); 
     var startField = $dialogContent.find("select[name='start']").val(calEvent.start); 
     var endField = $dialogContent.find("select[name='end']").val(calEvent.end); 
     var titleField = $dialogContent.find("input[name='title']"); 
     var bodyField = $dialogContent.find("textarea[name='body']"); 


     $dialogContent.dialog({ 
      modal: true, 
      title: "New Calendar Event", 
      close: function() { 
       $dialogContent.dialog("destroy"); 
       $dialogContent.hide(); 
       $('#calendar').weekCalendar("removeUnsavedEvents"); 
      }, 
      buttons: { 
       save: function() { 
        calEvent.id = id; 
        id++; 
        calEvent.start = new Date(startField.val()); 
        calEvent.end = new Date(endField.val()); 
        calEvent.title = titleField.val(); 
        calEvent.body = bodyField.val(); 

        SaveEvent(); // Modified 

        $calendar.weekCalendar("removeUnsavedEvents"); 
        $calendar.weekCalendar("updateEvent", calEvent); 
        $dialogContent.dialog("close"); 
       }, 
       cancel: function() { 
        $dialogContent.dialog("close"); 
       } 
      } 
     }).show(); 

     $dialogContent.find(".date_holder").text($calendar.weekCalendar("formatDate", calEvent.start)); 
     setupStartAndEndTimeFields(startField, endField, calEvent, $calendar.weekCalendar("getTimeslotTimes", calEvent.start)); 

    } 
}); 

답변

0

예. 가능합니다. 그리고 당신이 원하는 곳에서 것을 전화 (양호하게는 글로벌 네임 스페이스를 오염하지 않도록 네임 스페이스) 변수에 객체 외부 기능을 넣어 :

var namespace.myEventNew = function (calEvent, $event) { 
    [code here] 
} 

$calendar.weekCalendar({ 
    ... 
    eventNew : function (calEvent, $event) { 
     namespace.myEvent(calEvent, $event); 
    }, 
    ... 
}); 

당신이 수행 할 수 있습니다이 더 느슨하게 술집과 함께/모든 종류의 하위 시스템. 참고 : https://gist.github.com/1321768

0

때문에 기술적으로, 당신은 정의 된 함수에서 호출 할 수 있습니다 : 여기

사전

에서

덕분에 코드의 일부이다 같은 개체에 this.eventNew(...)으로 표시됩니다.

관련 문제