0

我创建了一个实现简单购物车的 dojo 模块。我有一个 load() 方法,可以为页面上的购物车生成 dom 节点并显示它们。这包括一个查询,该查询将点击事件分配给购物车中每个项目的“从购物车中删除”按钮。我希望此单击事件调用 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) {
                                //....
            },

我可以在这里做什么?

4

1 回答 1

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);
//....
于 2013-08-06T13:45:09.137 回答