在函数外部使用时,Kendo元素的DataSource是未定义的

时间:2014-08-11 10:51:47

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

我注意到Kendo MultiSelect dataSource的奇怪行为。 当我通过元素的某个事件调用函数时,例如按钮点击:

 function fillForm()
 {
  var ms = $("#selector").data('kendoMultiSelect');
  var ds = ms.dataSource.insert(....);
 };

当函数触发时,定义了dataSource。但是当我想在页面加载时调用一个函数时:

var ms = $("#selector").data('kendoMultiSelect');
var ds = ms.dataSource.insert(....);

我看到了错误:Cannot read property 'dataSource' of undefined

如果有人能说出我做错了什么,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

这意味着您在初始化之前尝试访问多选。初始化小部件后尝试执行此代码。

如果使用 MVC包装器,那么您应该在脚本块和文档就绪处理程序中添加MVC包装器代码下面的逻辑

e.g。

@(Html.Kendo()。SomeWidget())

<script>
      $(function(){
          var ms = $("#selector").data('kendoMultiSelect');
          //your code goes here
      })
</script>

如果通过$()。kendoWidget或通过kendo.bind()通过 JavaScript 使用常规初始化方式,那么您就开始尝试在用于初始化的小部件代码下方访问它。

    $("#ms").kendoMultiSelect({...}) // or kendo.bind('body')
    //widget is initialized 
    var ms = $("#ms").data('kendoMultiSelect');