在触发事件上重新渲染Backbone.Marionette模板

时间:2014-07-31 23:07:12

标签: javascript backbone.js scope marionette

我使用Backbone Marionette在我的页面上渲染布局。但是,在初始渲染之后,我尝试通过触发(" RefModal:PayRef")发出退款后重新渲染页面上的一个部分模板。不幸的是,我最终得到以下错误: '未捕获的TypeError:无法读取属性'显示'未定义的' 经过一些调试后,我似乎无法再访问totalRegion作为" that.totalRegion"变得不确定因此错误("然而,#34;似乎仍有范围)。

如果有人可以帮助您访问" 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)

1 个答案:

答案 0 :(得分:3)

尝试将此上下文绑定到事件处理程序:

mad.App.vent.on("RefModal:PayRef", function (orderModel) {
    var totalView = mad.App.Seller.OrdMgmt.OrdTotals.Controller.createPackageOrderTotals(orderModel);
    that.totalRegion.show(totalView);
}, this);

注意作为最后一个参数传入。然后,您可以访问this.totalRegion.show(view)