IBM 的 Dojo 和 iWidgets:HandleEventException: TypeError: Object [object Array] has no method 'split'

Posted

技术标签:

【中文标题】IBM 的 Dojo 和 iWidgets:HandleEventException: TypeError: Object [object Array] has no method \'split\'【英文标题】:Dojo and iWidgets by IBM: HandleEventException: TypeError: Object [object Array] has no method 'split'IBM 的 Dojo 和 iWidgets:HandleEventException: TypeError: Object [object Array] has no method 'split' 【发布时间】:2013-04-29 07:34:40 【问题描述】:

IBM 的 Dojo 和 iWidgets: 所以我的iWidget代码如下:

onEdit : function() 

                    dojo.require(["dijit/Dialog", "dojo/dom"], function(Dialog, dom)
                        var node = dom.byId("makeADialog");
                        var myDialog = new Dialog( title:"From Source Node" , node);
                        myDialog.show();
                    );


                ,

当我运行它时 - chrome 浏览器控制台显示:

   com.ibm.mm.iwidget.widget.IWidgetWrapperExtendedImpl     IWidgetWrapper._handleEventInternal: widget: testWidget, eventName: onedit, HandleEventException: TypeError: Object [object Array] has no method 'split'

怎么了?

【问题讨论】:

我会使用 javascript 调试器来查看发生错误的调用堆栈。既然您提到了 chrome - 您可以通过打开源面板并单击左下角的暂停按钮来设置“错误中断”。我完全在猜测,但我怀疑您使用的是旧版dojo.require,就好像它是较新的 AMD requiredojo.require 只需要一个字符串参数,并且是同步的,以及其他差异。您可能应该检查您使用的是哪个版本的 dojo,如果您想要 AMD require,只需使用 require 我的 Eclipce IDE 中有 1.8.3,哎呀! 1.4.3_IBM (21629) 在 IBM 通用测试客户端中分别用于 iWidget 和 Business Space 运行时。那我现在该怎么办? 这完全取决于您,显而易见的选择是更改您的代码以使其适用于 dojo 1.4.3,或者尝试以某种方式更改您的环境以加载更新版本的 dojo。 【参考方案1】:

正如 cmets 中所述,问题在于您的语法。由于您使用的是包含模块的旧方式 (dojo.require()),这也意味着您必须使用旧语法,而不是新语法。

这意味着您应该编写如下代码:

onEdit : function() 
  var Dialog = dojo.require("dijit.Dialog");
  var node = dojo.byId("makeADialog");
  var myDialog = new Dialog(
    title: "From Source Node"
  , node);
  myDialog.show();
,

【讨论】:

以上是关于IBM 的 Dojo 和 iWidgets:HandleEventException: TypeError: Object [object Array] has no method 'split'的主要内容,如果未能解决你的问题,请参考以下文章

IBM Worklight - 部署 dojo 应用程序时出现 dojo script.js:21 错误

IBM Worklight 6.0 - Worklight Starter Dojo 示例损坏?

IBM Worklight 6.0 - 控制 Dojo 层

IBM Worklight 6.0 - Dojo 库在部署后使用 localhost

IBM Worklight 5.0.6 - 无法添加外部 Dojo 组件(需要 Dojo Dgrid 时出现脚本错误)

IBM 表单设计器并使 jQuery 与 Dojo 一起工作