chiranjeevigk
chiranjeevigk

Reputation: 1676

Adding a custom widget on call back method

i have a call back method which is called by other class when some event occurs, which send some objects as parameters

    loadingIsDone : function(evt)
    {
        console.log(evt);
        for(var i=0; i<evt.layers.length;i++)
        {
           var row = new _LayerRow(evt.layers[i].layer);
            domConstruct.place(row.domNode,this.containerDiv,"last");
        }
    }

for each object which is received i need to create a Custom widget called _LayerRow, which is having one Checkbox and a Label

When i debug this code the pointer is not coming to the 2nd line of the loop.

and no error in the console..

but when i call the same in different file as below for testing purpose

               var obj = new Object();
                obj.id = "124";
                obj.name = "Chiru";
                var lay = new _LayerRow(obj);
                domConstruct.place(lay.domNode,win.body(),1);

The _LayerRow widget is working fine

_LayerRow.js

define([
"dojo/_base/declare",
"dijit/_WidgetBase",
"dijit/_OnDijitClickMixin",
"dijit/_TemplatedMixin",
"dojo/text!../templates/_layerrow.html"
], function (declare, _WidgetBase, _OnDijitClickMixin,_TemplatedMixin, template) {

return declare([_WidgetBase,_OnDijitClickMixin, _TemplatedMixin], {
    templateString: template,

    layer : null,

    constructor : function( layerObj)
    {
        this.id = layerObj.id;
        this.layer = layerObj;

    },
    postCreate : function()
    {
        this.inherited(arguments);
        this.layerName.innerHTML = this.layer.name;
    }

});

});

and templates/_layerrow.html

<div>
  <input type="checkbox" id="${id}">
  <label for="${id}" data-dojo-attach-point="layerName"></label>
</div>

Any idea why its not working.. how can i find the issue in this

Upvotes: 0

Views: 60

Answers (1)

Bobz
Bobz

Reputation: 2614

Most common reason for callbacks to fail is incorrect scope.

Because in asynchronous callbacks such as above, the context that the code is executing in has changed. It will no longer refer to the object that originally provided it, but its context will now refer to the enclosing object, the callback. To get around this, you can use hitch() to force the function to retain its original context

I see a reference to this in your callback, use hitch to correct the scope.

More info: http://dojotoolkit.org/reference-guide/1.9/dojo/_base/lang.html#hitch

Upvotes: 1

Related Questions