2015-03-02 60 views
0

我有一个简单的剑道调度演示:http://dojo.telerik.com/IqIYI/7在自定义编辑弹出模板剑道调度额外的按钮

在本演示中我定义为自定义编辑模板如下:

<script id="editor" type="text/x-kendo-template"> 
    <h3>Edit meeting</h3> 
    <p> 
     <label>Title: <input name="title" /></label> 
    </p> 
    <p> 
     <label>Start: <input data-role="datetimepicker" name="start" /></label> 
    </p> 
    <p> 
     <label>End: <input data-role="datetimepicker" name="end" /></label> 
    </p> 
</script> 

这个模板有2个按钮在创建新模式和3个按钮时默认处于编辑模式。

我现在试图在编辑弹出框中添加第4个按钮,然后捕获其单击事件并执行其他操作(创建一个新的弹出窗口,其中填充了“编辑为新的”事件的功能之一)。

在编辑实际事件(每当弹出模板加载时会触发)的情况下,我正在通过kendo的编辑事件添加此按钮。

edit: function(e) { 
      if (!e.event.isNew()) { 
       $(".k-edit-buttons.k-state-default").prepend('<a class="k-button" id="editasnew">Edit as New</a>'); 
      } 
    }, 

按钮有一个id = “editasnew”,然后单击事件捕手:

$('#editasnew').click(function(){ 
    console.log("edit now"); 
    var scheduler = $("#scheduler").data("kendoScheduler"); 
    scheduler.cancelEvent(); 

    setTimeout(function(){ 
     console.log("add new event now"); 
     scheduler.addEvent({ title: "(No title)" }); 
    }, 2000); 
    }); 

但是!点击事件永远不会被触发。

所以我想知道,有没有办法以不同的方式添加按钮? (参数通过kendo函数 - 我没有在文档中找到)

..或者重构点击事件捕获器(也许点击这个按钮有一些由剑道给出的停止传播函数)?

任何帮助表示赞赏!

回答

0

也许你可以使用columns.command.click功能

$("#grid").kendoGrid({ 
    columns: [ 
    { field: "name" }, 
    { command: [ { 
     name: "details", 
     click: function(e) { 
      // e.target is the DOM element representing the button 
      var tr = $(e.target).closest("tr"); // get the current table row (tr) 
      // get the data bound to the current table row 
      var data = this.dataItem(tr); 
      console.log("Details for: " + data.name); 
     } 
     } ] 
    } 
    ], 
    dataSource: [ { name: "Jane Doe" } ] 
}); 
+0

我看不到一种方法来实现这一点,因为剑道“网格”是一个不同的工具,而我有一个问题 - 剑道“调度器”。 – DavidDunham 2015-03-02 13:49:01

+0

抱歉,我不知道sheduler – Lafontein 2015-03-02 13:49:46

0

答:

click事件需要特别添加的(我不知道为什么),但这个工程:

  1. 包装点击处理函数内功能

_

function addClickEvent(){ 
    $('#editasnew').click(function(){ 
     console.log("edit now"); 
     var scheduler = $("#scheduler").data("kendoScheduler"); 
     scheduler.cancelEvent(); 

     setTimeout(function(){ 
     console.log("add new event now"); 
     scheduler.addEvent({ title: "(No title)" }); 
     }, 2000); 

    }); 
    } 
  • 执行上述功能中的调度器
  • _

    edit: function(e) { 
          if (!e.event.isNew()) { 
           $(".k-edit-buttons.k-state-default").prepend('<a class="k-button" id="editasnew">Edit as New</a>'); 
          addClickEvent(); 
          } 
        }, 
    

    的编辑事件任何有兴趣这是我的更新例如:

    http://dojo.telerik.com/IqIYI/21