如何在Dojo中使用postCreate?
我正在测试post-create,以便在post-create中设置类属性,而不是在此处调用如何在Dojo中使用postCreate?,dojo,widget,Dojo,Widget,我正在测试post-create,以便在post-create中设置类属性,而不是在此处调用 request("js/my/data/sample.json", { handleAs: "json" }).then(function (jsonResults) { arrayUtil.forEach(jsonResults.LinksMap, function (List) { arrayUtil.forEach(List.LinksMap.entry, func
request("js/my/data/sample.json", {
handleAs: "json"
}).then(function (jsonResults) {
arrayUtil.forEach(jsonResults.LinksMap, function (List) {
arrayUtil.forEach(List.LinksMap.entry, function (Ientry) {
if ('information' === Ientry.linkType) Ientry.className = 'info';
else if ('news link' === Ientry.linkType) Ientry.className = 'news';
var widget = new support(Ientry).placeAt(authorContainer);
});
});
});
我试过了
postCreate: function () {
this.inherited(arguments);
},
_setLinkClssAttr: function (iconClass) {
if (iconClass != "") {
if ('information' === linkType) LinkClss = 'info';
if ('news link' === Ientry.linkType) LinkClss = 'news';
this._set("LinkClss", iconClass);
this.LinkNode.class = iconClass;
}
}
我的HTML模板如下所示
<a class="${baseClass}LinkClss" href="${Link.url}" data-dojo-attach-point="LinkNode">${Link.title}</a>
HTML代码:
<div id="myWidget1"></div>
<div id="myWidget2"></div>
<div id="myWidget3"></div>
创建小部件的代码,传入条目对象:
require([
"dojo/parser", "dojo/dom", "MyWidget", "dojo/domReady!"],
function (parser, dom, MyWidget) {
console.log(arguments);
parser.parse().then(function () {
var linkTypes = ['information', 'news link', 'other'];
linkTypes.forEach(function (linkType, i) {
var entry = {
link: 'hello' + (i + 1),
linkType: linkType,
linkHref: "https://www.google.co.uk/search?q=" + linkType
};
new MyWidget(entry, dom.byId("myWidget" + (i + 1)));
});
});
});
定义小部件的代码:
define("MyWidget", [
"dojo/_base/declare", "dojo/dom-class", "dojo/dom-attr", "dojo/query",
"dijit/_WidgetBase", "dijit/_TemplatedMixin", "dojo/NodeList-dom"],
function (declare, domClass, domAttr, query, _WidgetBase, _TemplatedMixin) {
var template = [
'<div>',
'<a data-dojo-attach-point="linkNode"></a>',
'</div>'];
return declare("MyWidget", [_WidgetBase, _TemplatedMixin], {
templateString: template.join("\n"),
constructor: function (params, srcNodeRef) {
console.log("creating widget with params " + dojo.toJson(params) +
" on node " + srcNodeRef);
},
postCreate: function () {
console.log(arguments);
this.inherited(arguments);
this._setLinkClass();
},
// private methods
_setLinkClass: function () {
var linkClass = this._calculateLinkClass();
console.log(linkClass, this.linkNode);
if (linkClass != "") {
query(this.linkNode).addClass(linkClass);
}
},
_calculateLinkClass: function () {
var linkClass = "";
if ('information' === this.linkType) linkClass = 'info';
if ('news link' === this.linkType) linkClass = 'news';
return linkClass;
},
// Attributes
link: "empty",
_setLinkAttr: {
node: "linkNode",
type: "innerHTML"
},
linkHref: "#",
_setLinkHrefAttr: function (href) {
domAttr.set(this.linkNode, "href", href);
}
});
});
define(“MyWidget”[
“dojo/_base/declare”、“dojo/dom类”、“dojo/dom属性”、“dojo/query”,
“dijit/_WidgetBase”、“dijit/_TemplatedMixin”、“dojo/NodeList dom”],
函数(declare、domClass、domAttr、query、\u WidgetBase、\u TemplatedMixin){
变量模板=[
'',
'',
''];
返回declare(“MyWidget”,[[u-WidgetBase,[u-TemplatedMixin]{
templateString:template.join(“\n”),
构造函数:函数(params,srcNodeRef){
log(“使用params创建小部件”+dojo.toJson(params)+
“在节点上”+srcNodeRef);
},
后创建:函数(){
log(参数);
这是继承的(论点);
这是。_setLinkClass();
},
//私有方法
_setLinkClass:函数(){
var linkClass=这个;
log(linkClass,this.linkNode);
if(linkClass!=“”){
查询(this.linkNode).addClass(linkClass);
}
},
_CalculateLink类:函数(){
var linkClass=“”;
if('information'==this.linkType)linkClass='info';
如果('news link'==this.linkType)linkClass='news';
返回链接类;
},
//属性
链接:“空”,
_setLinkAttr:{
节点:“链接节点”,
类型:“innerHTML”
},
linkHref:“#”,
_setLinkHrefAttr:函数(href){
domAttr.set(this.linkNode,“href”,href);
}
});
});
结果:
Paul,这很有效。我所做的唯一更改是domClass.add(this.linkNode,linkClass);1.8
define("MyWidget", [
"dojo/_base/declare", "dojo/dom-class", "dojo/dom-attr", "dojo/query",
"dijit/_WidgetBase", "dijit/_TemplatedMixin", "dojo/NodeList-dom"],
function (declare, domClass, domAttr, query, _WidgetBase, _TemplatedMixin) {
var template = [
'<div>',
'<a data-dojo-attach-point="linkNode"></a>',
'</div>'];
return declare("MyWidget", [_WidgetBase, _TemplatedMixin], {
templateString: template.join("\n"),
constructor: function (params, srcNodeRef) {
console.log("creating widget with params " + dojo.toJson(params) +
" on node " + srcNodeRef);
},
postCreate: function () {
console.log(arguments);
this.inherited(arguments);
this._setLinkClass();
},
// private methods
_setLinkClass: function () {
var linkClass = this._calculateLinkClass();
console.log(linkClass, this.linkNode);
if (linkClass != "") {
query(this.linkNode).addClass(linkClass);
}
},
_calculateLinkClass: function () {
var linkClass = "";
if ('information' === this.linkType) linkClass = 'info';
if ('news link' === this.linkType) linkClass = 'news';
return linkClass;
},
// Attributes
link: "empty",
_setLinkAttr: {
node: "linkNode",
type: "innerHTML"
},
linkHref: "#",
_setLinkHrefAttr: function (href) {
domAttr.set(this.linkNode, "href", href);
}
});
});