Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Dojo中使用postCreate?_Dojo_Widget - Fatal编程技术网

如何在Dojo中使用postCreate?

如何在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

我正在测试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, 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);
        }
    });
});