从木偶视图重新加载把手部分会失去对父视图中为部分模板元素定义的ui对象的访问权限

时间:2014-06-09 06:53:12

标签: backbone.js handlebars.js marionette

引用this链接;我正在我的应用程序中从木偶视图重新加载把手部分模板。

在我的牵线木偶视图中,我已将ui对象定义如下

ui: {            
        updateCarrierRow: ".hook--edit-carrier-row",
        dispatchEquipment: ".hook--dispatch-equipment",
        editButton: ".hook--edit-button",
        trailerText: "#trailer-text",
        tractorText: "#tractor-text"
    },

从哪个预告片文本& tractorText变量引用使用Handlebars表达式在当前视图的html模板中加载的把手模板中的元素

{{> dispatchedEquipement}}

应用程序用户将编辑使用此部分模板呈现的部分中的某些字段,以便提交给服务器的更改我需要使用父模型中的修改值重新加载此部分模板。

因此,通过引用上面提到的链接,我使用以下代码段

在父视图上重新加载了部分模板
this.ui.dispatchEquipment.empty().html(Handlebars.compileClean(dispatchEquipmentSectionPartial)({
                        "dispatchInformation": that.model.get("dispatchInformation"), "displayText": localizedText.displayText
                    }));

使用此代码,我成功地重新加载了父视图上的局部视图,但是当我尝试访问部分模板中的输入元素值或尝试更改/添加css类时,后续编辑操作不能使用以下代码语句< / p>

this.ui.trailerText.val();

this.ui.tractorText.val();

虽然文本框包含正确的值,但它为我提供了空值。在父视图的this.ui对象的帮助下添加或删除这些元素的css类也是如此

this.ui.tractorText.addClass("hidden")

不要将隐藏的css类添加到元素。

到目前为止,我已经设法在这些元素的jQuery id选择器的帮助下工作。但我想知道如何解决这个问题? 在此先感谢。

1 个答案:

答案 0 :(得分:0)

我认为这是因为ui元素在视图初始化时被绑定,但是在视图的生命周期中,你清空并替换html,从而不再将你的ui元素绑定到屏幕上的内容。

之后您可以尝试调用this.bindUIElements(),但不能完全确定,因为我从来没有像那样使用它。