gpt4 book ai didi

javascript - Backbone Js Marionette Js 僵尸 View

转载 作者:行者123 更新时间:2023-11-28 07:53:30 31 4
gpt4 key购买 nike

我正在尝试使用 Marionet 模块来玩 Backbone。

例如。实现“加载微调器”,正如 David Sulc 在“ contact manager”应用程序中所做的那样,Firefox 的“ backboneye”插件在“微调器”被内容替换后向我显示“僵尸 View ”。它是“真正的”僵尸吗,因为它具有“isDestroyed:true”属性?

ps of the dom of the zombie

此外,根据 Chrome 插件“Backbone debugger”, View 已被删除

enter image description here

我应该担心他们吗?

这是 Controller :

define(["app", "apps/items/itemsView"], function(app, View){
app.module("ItemsApp.List", function(List, app, Backbone, Marionette, $, _){
List.Controller = {
listAllItems: function(){
require(["common/views", "entities/items"], function(CommonViews){

var loadingView = new CommonViews.Loading();
app.main.show(loadingView);

var fetchingItems = app.request("items:entities");
var itemsPageLayout = new View.Layout();
var panelView = new View.Panel();

$.when(fetchingItems).done(function(items){
var allItemsView = new View.Items({collection:items});

itemsPageLayout.on("show", function(){
itemsPageLayout.panelRegion.show(panelView);
itemsPageLayout.itemListRegion.show(allItemsView);
});
app.main.show(itemsPageLayout);
});
});
}
}
});
return app.ItemsApp.List.Controller;
});

最佳答案

您可能没有僵尸 View 。

如果您的main区域使用默认的 Marionette Region type并且您的 View 继承自 Marionette View 类型(ItemViewCollectionViewCompositeViewLayout),Marionette 确保 Zombie避免观看。

当 View 被交换出某个区域时(当您调用 app.main.show(itemsPageLayout) 时会发生这种情况),微调器 View 元素将从 DOM 和所有 listenTo 中删除-样式事件处理程序未绑定(bind)。

您可以在 code for Region._destroyView 中看到这一点,在 show 上调用:

_destroyView: function() {
var view = this.currentView;

if (view.destroy && !view.isDestroyed) {
view.destroy();
} else if (view.remove) {
view.remove();
}
},

Marionette View 类型有一个 destroy 方法,用于处理删除 View 的 DOM 元素并解除绑定(bind)事件处理程序(与 listenTo 绑定(bind)) - 它并不像解除与 on 绑定(bind)的事件绑定(bind)那么简单)。基于普通 Backbone.View(而不是 Marionette 类型)的 View 必须取消绑定(bind)它们自己的事件处理程序。未能正确执行此操作是僵尸 View 的主要原因。通过使用 Marionette Views,您将受到保护。

如果您使用覆盖 Region.show 的自定义 Region 类型,则需要确保它在 View 上调用 destroy被换掉了。

关于javascript - Backbone Js Marionette Js 僵尸 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26461683/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com