2014-06-30 60 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> 
相关问题