如何使用deferred.when与事件监听器和事件处理程序?

时间:2013-09-13 05:21:57

标签: dojo

我正在尝试使用一个Deferred.when语句,该语句可以在完成事件处理程序后返回一个对象。我的代码如下所示。有人可以指导我如何使它工作?我正在使用dojo 1.7。

define(["dojo/_base/declare","dojo/_base/lang", "dojo/_base/xhr",
    "dojo/_base/json","dojo/_base/Deferred","dijit/registry","dojo/_base/connect",
    "dojo/query","dojo/on","dojo/dom-attr","dojo/dom","dojo/has","dojo/json","dojo/dom-style"],
    function(declare,lang,xhr,json,Deferred,registry,connect,$,on,attr,dom,has,json,domStyle)
    {

        declare("model.Item", [], 
        {
            deferred:null,
            item:null,
Load: function(){
               this.deferred = new Deferred();

               var overlay = registry.byId("readFromStore");
                   overlay.show();
                   Deferred.when(connect.connect(registry.byId("storeReadOK"),"onClick",this,this.loadFromStorage), (return (this.deferred)));
                  // I want modification for the above line.
                }

loadFromStorage:function()
                {
            // Do something here
               this.deferred.callback(this.item);

           }
     return model.Item;
        }
    );

我也在下面的代码中尝试了Load函数,但它也无效。

    Load: function(){

     this.deferred = new Deferred();

              connect.connect(registry.byId("storeReadOK"),"onClick",this,this.loadFromStorage);
                var overlay = registry.byId("readFromStore");
                    overlay.show();
                        //  Deferred.when(connect.connect(registry.byId("storeReadOK"),"onClick",this,this.loadFromStorage),(overlay.hide()));

                return this.deferred;
     }

1 个答案:

答案 0 :(得分:0)

这下面的代码工作正常,由于我的代码中的其他一些错误,我已经解决了问题,我已经纠正并且现在工作正常。感谢所有试图帮助我的人。

   Load: function(){

 this.deferred = new Deferred();

          connect.connect(registry.byId("storeReadOK"),"onClick",this,this.loadFromStorage);
            var overlay = registry.byId("readFromStore");
                overlay.show();
               return this.deferred;
 }