我正在使用 Backbone Marionette 在我的页面上呈现布局。但是,在初始渲染之后,我尝试在通过触发(“RefModal:PayRef”)发出退款后重新渲染页面上的部分模板之一。不幸的是,我最终遇到了以下错误: '未捕获类型错误:无法读取未定义的属性'显示'' 经过一些调试后,我似乎不再能够访问totalRegion,因为“that.totalRegion”变得未定义,因此出现错误(“that”似乎仍然具有范围)。
如果有人可以帮助找到在第二个、第三个、第四个等上访问“totalRegion”的方法,触发“RefModal:PayRef”那就太棒了。我希望这是足够的信息来继续。
views.OrderDTLayout = Marionette.Layout.extend({
template: "orderManagement/bb-total-layout.dust",
className: "bbMgmt",
regions: {
totalRegion: "#bb-total-region",
shippingRegion: "#bb-global-shipping-region"
},
events: {
"click #bb-cancel": "showCancelModal",
"keypress #bb-cancel": "handleShowCancelModal"
},
initialize: function () {
var that = this;
var spinnerMod = mad.App.module("Seller.OrdMgmt.Spinner");
this.loadingController = new spinnerMod.Controller();
mad.App.vent.on("RefModal:PayRef", function (orderModel) {
var totalView = mad.App.Seller.OrdMgmt.OrdTotals.Controller.createPackageOrderTotals(orderModel);
that.totalRegion.show(totalView);
});
//triggered from separate file
mad.App.vent.trigger("RefModal:PayRef", order)
最佳答案
尝试将其上下文绑定(bind)到您的事件处理程序:
mad.App.vent.on("RefModal:PayRef", function (orderModel) {
var totalView = mad.App.Seller.OrdMgmt.OrdTotals.Controller.createPackageOrderTotals(orderModel);
that.totalRegion.show(totalView);
}, this);
注意this作为最后一个参数传入。然后就可以访问this.totalRegion.show(view)
关于javascript - 在触发事件上重新渲染 Backbone.Marionette 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25070398/