【问题标题】:External Javascript file that has events for a Kendo Grid包含 Kendo Grid 事件的外部 Javascript 文件
【发布时间】:2014-01-05 23:22:39
【问题描述】:

是否有从外部 Javascript 文件中读取剑道事件的正确方法?

在我看来,.cshtml

@(Html.Kendo().Grid<Model>()
        .Name("EmployeeGrid")
        .Columns(cols => { })
        .Events(evt => evt.DataBound("afterGridLoaded"))
        .DataSource(dataSource => dataSource.Ajax()
                                    .Batch(true)
                                    .PageSize(10)
                                    .Read(read => read.Action("GetEmployeeList", "EmployeeDetail"))
                                   )
      )

"afterGridLoaded" 位于加载在页面顶部的外部 Javascript 中。

外部 JavaScript 文件 -

$(function () {
  function afterGridLoaded(e) {
  $(".k-button.xxx").click(function () {
    debugger;
    var idEmployee = $(this).attr('tag');
    myJsFunc(idEmployee);
    });
  }
});

以及调用 Javascript 的方式 - 这是在页面顶部完成的

@section scripts
{
    <script src="~/Scripts/Views/EmployeeDetail/EmployeeList.js" ></script>    
}

外部 Javascript 文件已加载,我可以在 Chrome 的 DEV 工具中的网络选项卡下看到它,

当我尝试加载页面时,我在控制台上收到以下错误消息,阻止页面进一步加载,

有没有办法让 kendo 事件使用外部 Javascript 文件工作?

【问题讨论】:

    标签: javascript asp.net-mvc-4 kendo-ui kendo-grid jquery-events


    【解决方案1】:

    问题是您的afterGridLoaded 函数被jQuery 闭包函数包裹,这意味着您不能从闭包外部调用它。

    移除闭包并将脚本标签移动到页面底部

    // $(function () { get rid of this
    function afterGridLoaded(e) {
        $(".k-button.xxx").click(function () {
            debugger;
            var idEmployee = $(this).attr('tag');
            myJsFunc(idEmployee);
        });
    }
    //}); and this
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-19
      • 1970-01-01
      • 2023-03-16
      • 1970-01-01
      • 1970-01-01
      • 2011-07-05
      • 2017-10-25
      相关资源
      最近更新 更多