javascript/dojo方法作用域

javascript/dojo方法作用域,javascript,module,dojo,Javascript,Module,Dojo,我创建了一个dojo模块,它实现了一个简单的购物车。我有一个load()方法,它在页面上为购物车生成dom节点并显示它们。这包括一个查询,该查询为购物车中的每个项目的“从购物车中删除”按钮分配一个单击事件。我希望这个click事件也在模块的根级别调用remove()方法,但是在传递了分配click事件所需的所有回调之后,我不知道如何再次访问remove()方法的范围。以下是一段代码片段: define([ "dojo/dom", "dojo/json", "dojo/cookie", "dojo

我创建了一个dojo模块,它实现了一个简单的购物车。我有一个load()方法,它在页面上为购物车生成dom节点并显示它们。这包括一个查询,该查询为购物车中的每个项目的“从购物车中删除”按钮分配一个单击事件。我希望这个click事件也在模块的根级别调用remove()方法,但是在传递了分配click事件所需的所有回调之后,我不知道如何再次访问remove()方法的范围。以下是一段代码片段:

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) {
                                //....
            },
定义([“dojo/dom”、“dojo/json”、“dojo/cookie”、“dojo/_base/array”、“dojo/query”、“dojo/on”、“dojo/NodeList dom”],
函数(dom、json、cookie、数组、查询等){
返回{
加载:函数(配置){
var cart=this.get(config);
如果(购物车!=null){
var cartDiv=dom.byId(config.cart.domWrapper);
//console.log(“购物车:“+Cart”);
cartDiv.innerHTML=“购物车”

”; cartDiv.innerHTML+=this.getHTML(购物车); } 查询(“.remove_item”).forEach(函数(节点,i){ 在(查询(“.remove_item”)[i],“单击”,函数(事件){ 日志(“从购物车中删除项目”+i+); remove(config,i);//方法在此作用域中不存在 }); }); }, 删除:函数(配置,项目ID){ //.... },
我能在这里做什么?

你可以用

        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);
//....