ASP.NET Ajax 中的“$create”函数创建一个 JavaScript 类的实例。微软对如何使 JavaScript 面向对象有自己的看法,而且随着时间的推移,他们的方法并不完美。
无论如何,为了解释正在发生的事情,让我概述一下它是如何工作的。我们从实现IScriptControl接口的服务器端控件开始,该接口需要两个成员:GetScriptDescriptors 和 GetScriptReferences。第二个非常简单——它允许您注册对您控制所需的所有 JavaScript 文件的引用。另一方面,GetScriptDescriptors 让您定义要使用的 JavaScript 类的所有实例,并允许您设置它们的属性 - 如果您愿意,可以初始化它们。
您粘贴的自动生成的 JavaScript 代码基本上是您在 GetScriptDescriptors 中定义的,您需要一个类型为“SitefinityWebApp.Esd.TheLab.SampleHtmlEditor.FancyBlockDesigner”的实例,您希望在其中初始化 Editor 属性。这段代码将寻找一个如下所示的 JavaScript 构造函数:
function SitefinityWebApp.Esd.TheLab.SampleHtmlEditor.FancyBlockDesigner(element) {
}
很可能还定义了一个原型,例如:
SitefinityWebApp.Esd.TheLab.SampleHtmlEditor.FancyBlockDesigner.prototype = {
}
现在,由于您发布的错误指出:“无法获取未定义或空引用的属性'FancyBlockDesigner'”,很可能是以下问题之一:
- 您没有包含包含我上面讨论过的类(构造函数 + 原型)的 JavaScript 文件
- 您忘记将“FancyBlockDesigner”添加到构造函数(似乎您确实有其他对象,可能是通过 MS Ajax 命名空间 - “SitefinityWebApp.Esd.TheLab”
- 您尚未注册“SampleHtmlEditor”命名空间。确保在 JS 文件的顶部有以下内容:
Type.registerNamespace("SitefinityWebApp.Esd.TheLab.SampleHtmlEditor");
因此,长话短说,找不到名为“SitefinityWebApp.Esd.TheLab.SampleHtmlEditor.FancyBlockDesigner”的函数。
希望这会有所帮助,伊万