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

标签 javascript backbone.js scope marionette

我正在使用 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/

相关文章:

javascript - Jquery动画功能不移动图像

jquery - Backbone - 查看元素持续触发 Mouseenter/Mouseleave

javascript - 为什么主干 View 检测不到模型更改?

sql - Ruby on Rails - 具有连接和顺序的范围

C 结构未初始化的外部构造函数

spring-mvc - @scope ("request") 不起作用,spring mvc 仍然返回一个单例

javascript - 如何在fabricjs中获取缩放后的图像数据

javascript - 为什么 Angular 会将索引 0 数组插入子数组而不是索引 1?

javascript - 将数字格式化为时间,如 hh :mm

javascript - 在 Backbone 中调用父类(super class)方法