当我尝试在我正在创建的dojo小部件中实例化一个类时,我遇到了主题错误: 我在名为/ Templates的目录中有小部件和小部件的html模板。这是代码:
widget(Templates / Person.js):
define([
"dojo/_base/declare",
"dijit/_WidgetBase",
"dijit/_TemplatedMixin",
"dojo/text!Templates/Person.htm"
],
function (declare, _WidgetBase, _TemplatedMixin, Person) {
return
declare([_WidgetBase, _TemplatedMixin], {
templateString: Person
});
}
);
html模板(Templates / Person.htm)
<div>
<p>Bob</p>
<p>Jones</p>
</div>
测试页面(TestPerson.htm)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
</head>
<body class="claro">
<script data-dojo-config="async: 1, dojoBlankHtmlUrl: '/blank.html',
packages: [ {
name: 'Templates',
location: location.pathname.replace(/\/[^/]+$/, '') + '/Templates'
} ]"
src="//ajax.googleapis.com/ajax/libs/dojo/1.10.0/dojo/dojo.js"></script>
<script>
require([
"Templates/Person"
], function (Person) {
var p = new Person();//The object is not function error occurs here
});
</script>
</body>
</html>
有什么想法吗?可能是因为我正在使用CDN吗?
由于
答案 0 :(得分:0)
它对我来说很好,你确定加载了正确的文件(在浏览器控制台中检查响应)。
您唯一缺少的是您正在实例化Person
窗口小部件,但您没有将其绑定到DOM节点。这对我来说很好:
var p = new Person({}, "person");
然后我添加了一个名为:
的DOM节点<div id="person"></div>
在这里你可以看到它正常工作:http://plnkr.co/edit/0doWDEB6C7Rbg4kU4Mtp?p=preview