我正在创造一个拖累& Weebly的drop元素。 Weebly将每个元素包装在Backbone JS视图中,如explained here。
// My js file. PlatformElement is a Weebly-controlled object exposed to me.
PlatformElement.extend({
initialize: function() {
// Weebly calls this method automatically at element creation time.
// This is where I add a new menu item to an external navigation menu.
}
});
当Backbone视图为initialize
d时,我将新的DOM节点添加到外部导航菜单。我的问题从这里开始:当我的模型被销毁时,我创建的DOM节点仍然存在。
每次用户在Web设计器界面中重新配置我的元素时,Weebly都会破坏/重新创建视图。我的外部菜单节点没有被销毁,因为它不是模型的一部分,而且我的JS也没有意识到要去除菜单节点的destory事件。
当然,这意味着对我的元素的每次更改都会创建另一个重复的菜单节点。
问题:
答案 0 :(得分:2)
Backbone确实提供了监听Backbone对象(Model,View,Collection,...)发生的事件的方法。要听取模型的破坏事件,你可以:
const model = new Model({/*...*/});
// solution 1
model.on('destroy', () => console.log('model is destroyed'));
// soluction 2
const view = new View({/*...*/});
view.listenTo(model, 'destroy', () => console.log('model is destroyed'));
model.destroy(); // this will trigger two callbacks above