2014-06-30 63 views
3

因爲我需要一個自定義設置來安排我的日程安排,所以我實現了單獨的Calendar,Scheduler和RecurrenceEditor小部件。到目前爲止,一切工作正常,但我無法從RecurrenceEditor小部件中獲取已分析的字符串。我還沒有看到在API文檔中將規則作爲字符串提取的方法(RecurrenceEditor小部件也沒有在那裏記錄)。有沒有辦法從KendoUI Recurrence Editor獲取重複字符串?

這是我如何建立recurrenceEditor:

$(document).ready(function() 
{ 
    $("#recurrence-editor").kendoRecurrenceEditor({ 
    start: new Date(), 
    change: function(e) 
    { 
     var editor = e.sender; 

     // I want to get the recurrence rule string here. 
    } 
    }); 
}); 

我沒有看到螢火蟲任何東西,讓我的方法或屬性我可能會嘗試的提示。到目前爲止,我已經試過:

editor.ruleValue 
editor.recurrenceRule 

它看起來像我有機會獲得一些信息,但我不想寫我自己的選擇,對解析的串法,如果我能得到它來自再發行編輯器本身。

UPDATE:當我設置它是這樣的:

$(document).ready(function() 
{ 
    $("#recurrence-editor").kendoRecurrenceEditor({ 
    start: new Date(), 
    edit: function(e) 
    { 
     var editor = e.sender; 
     var recurrenceString = editor.RecurrenceRule; 

     return recurrenceString; 
    } 
    }); 
}); 

編輯事件永遠不會觸發。可能是因爲我沒有將執行編輯器作爲調度程序窗口小部件的一部分來實現,而是作爲頁面上的獨立窗口小部件。

謝謝!

回答

1

您必須從您在編輯器的事件編輯/創建者模式中描述的事件中獲取它。一旦你的事件,它只是.RecurrenceRule,如果沒有記錯,這只是e.event.RecurrenceRule

有趣的是,在該字符串中使用的標準是RFC 5545 3.3.10

+1

感謝您的答覆,但無論事件和RecurrenceRule是在發送的JavaScript事件信息未定義進入更改事件處理程序。 –

+0

您是否可以在編輯事件上嘗試該代碼以查看它是否有效,如果您需要更改事件,我們會反向工作? – Matt

+0

編輯我上面的原始問題(評論太短)。簡而言之,編輯事件不會觸發我如何實現RecurrenceEditor小部件。 –

3

設置在調度的編輯事件再次發生編輯器,它會火更改事件和值屬性是標準iCal重複規則。

這裏是我的:

// Setup Recurrence Editor 
// Telerik support recommends this method over the common inline script 
// because it allows us to choose which recurrence editor. However, it does 
// break the MVVM two-way bindings, so the current value MUST be explicitly set 
// on creation, and the change event must be handled. 
var event = e.event, 
    container = e.container, 
    recurrenceEditor = container.find("#recurrenceEditor"); 

if (kendo.support.mobileOS === false) { 
    recurrenceEditor.kendoRecurrenceEditor({ 
     start: new Date(e.event.start), 
     value: e.event.recurrenceRule, 
     timezone: self.scheduleConfig.timezone, 
     messages: self.scheduleConfig.messages.recurrenceEditor, 
     change: function (ev) { 
      event.set("recurrenceRule", this.value()); 
     } 
    }); 
} else { 
    // The Mobile Recurrence Editor requires the parent kendo pane 
    // be passed as a parameter, otherwise it will crash when the 
    // user attempts to alter the frequency 

    var pane = container.parent(".km-pane").data("kendoMobilePane"); 

    recurrenceEditor.kendoMobileRecurrenceEditor({ 
     start: new Date(e.event.start), 
     value: e.event.recurrenceRule, 
     timezone: self.scheduleConfig.timezone, 
     messages: self.scheduleConfig.messages.recurrenceEditor, 
     pane: pane, 
     change: function(ev) { 
      event.set("recurrenceRule", this.value()); 
     } 
    }); 
} 

和HTML(自定義編輯器模板中)

<div class="lineEntry" data-bind="invisible: recurrenceId"> 
    <div id="recurrenceEditor" name="recurrenceRule" data-bind="value: recurrenceRule" class="toInlineBlock"> 
    </div> 
</div> 
相關問題