因为我需要为我的调度设置进行自定义设置,所以我正在实现单独的Calendar,Scheduler和RecurrenceEditor小部件。到目前为止,一切都运行良好,但我无法从RecurrenceEditor小部件中获取解析后的字符串。我还没有看到一种方法将规则作为API文档中的字符串拉出来(RecurrenceEditor小部件也没有真正记录在那里)。
这就是我设置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.
}
});
});
我在Firebug中没有看到任何提示我可能尝试的方法或属性的提示。到目前为止,我已经尝试过:
editor.ruleValue
editor.recurrenceRule
看起来我可以访问一些信息,但如果我可以从重复编辑器本身获取它,我就不想编写自己的select-to-parseable-string方法。
更新:当我这样设置时:
$(document).ready(function()
{
$("#recurrence-editor").kendoRecurrenceEditor({
start: new Date(),
edit: function(e)
{
var editor = e.sender;
var recurrenceString = editor.RecurrenceRule;
return recurrenceString;
}
});
});
编辑事件永远不会触发。可能是因为我没有将recurrence编辑器作为Scheduler小部件的一部分实现,而是作为页面上的独立小部件实现。
谢谢!
答案 0 :(得分: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>
答案 1 :(得分:1)
您必须从您在编辑器的事件编辑/创建者模式中描述的事件中获取它。一旦你收到活动,它只是.RecurrenceRule
,如果内存服务,它只是e.event.RecurrenceRule
有趣的是,该字符串中使用的标准是RFC 5545 3.3.10