我创建了一个实现简单购物车的 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) {
//....
},
我可以在这里做什么?