Kendo UI - Javascript事件处理程序(代码分离+参数)

时间:2014-06-15 13:11:02

标签: javascript asp.net-mvc kendo-ui

我在ASP.NET MVC razor视图中使用了一个Kendo ui treeview-control。在Kendo UI示例中,java脚本事件处理程序始终直接嵌入到视图中(我认为这是一种不好的做法)。我想这只是因为简化,但我现在已经在一个单独的JS文件中将JS事件处理程序分离为" Scripts / views" -tder中的视图" myView.js&# 34; -file。现在我遇到了问题,我的资源字符串不再正确显示。我的想法是将资源字符串作为视图中的附加参数传递给JS事件处理程序,但我不知道如何做到这一点。下面我添加了我的代码示例。

View.cshtml:

<script src="@Url.Content("~/Scripts/views/myView.js")" type="text/javascript"></script>
@(Html.Kendo().TreeView()
     .Name("treeview")
     .BindTo((IEnumerable<TreeViewItemModel>)Model.MyTreeViewItemModel)
     .Events(events => events
         .Select("onSelect") // how to pass parameters to onSelect?
     )
)

myView.js:

function onSelect(e) {
     var node = this.dataItem(e.node);
     // ... here I do something with node which works fine
     addAlert("@Resources.MessageDeleteSuccess"); // here I call my addAlert function which worked in the view, but not after moving the function to the JS-file
}

总结一下,我的问题是:

  1. 我是如何将JS事件处理程序与我的视图(在单独的JS文件中)分开的最佳实践,或者我该如何做?

  2. 如何将参数添加到事件处理程序,例如&#34; OnSelect&#34;?

1 个答案:

答案 0 :(得分:0)

来自http://www.telerik.com/forums/passing-arguments-from-grid-event

  

目前,不向事件处理程序发送其他参数   但请注意,在处理程序中,您可以访问   通过使用“this”关键字

来调用

我对事件处理程序的“this”参数(使用Kendo Grid)的经验是它几乎没有提供有用的信息。例如,我不知道如何从“this”获取网格的UI元素。

一种解决方法是在本地定义一个处理程序,然后使用您想要的参数调用myView.js中的处理程序。例如,您的处理程序可以是“viewOnSelect”,而在View.cs中,您将拥有

function viewOnSelect(e) {
    onSelect(e, '@Resources.MessageDeleteSuccess');
}