2013-08-06 49 views
0

我创建了一个实现简单购物车的dojo模块。我有一个load()方法,为页面上的购物车生成dom节点并显示它们。这包括为购物车中的每个商品分配点击事件到“从购物车中移除”按钮的查询。我希望这个点击事件在模块的根级调用remove()方法,但是在传递所有必要的回调来分配点击事件后,我无法弄清楚如何访问移除的范围()方法。这里是一个代码片段:javascript/dojo方法范围

define([ "dojo/dom", "dojo/json", "dojo/cookie", "dojo/_base/array", "dojo/query", "dojo/on", "dojo/NodeList-dom" ], 
    function(dom, json, cookie, array, query, on) { 

     return { 
      load : function(config) { 
       var cart = this.get(config); 
       if (cart != null) { 
        var cartDiv = dom.byId(config.cart.domWrapper); 
        // console.log("Shopping Cart: " + cart); 
        cartDiv.innerHTML = "<p>Shopping Cart</p>"; 
        cartDiv.innerHTML += this.getHTML(cart); 
       } 

       query(".remove_item").forEach(function(node, i) { 
        on(query(".remove_item")[i], "click", function(event) { 
         console.log("Removing item " + i + " from cart..."); 
         remove(config, i); //method does not exist at this scope 
        });     
       }); 

      }, 

      remove : function(config, itemId) { 
           //.... 
      }, 

我能在这里做什么?

回答

0

可以 “拯救” 与

 load : function(config) { 
      var self = this; 
      //.... 

类,然后调用 “删除” 与

//....  
on(query(".remove_item")[i], "click", function(event) { 
         console.log("Removing item " + i + " from cart..."); 
         self.remove(config, i); 
//....