当我尝试从集合中移除模型时,收到错误:
Cannot read property 'removed' of undefined
如果我单击两次,它就会工作。第一个
eblbsuwk1#
在Backbone 1.3.3中,它可以正常工作。从Marionette 3.2.0 readme:兼容性和要求MarionetteJS目前使用以下库:
从 Backbone.js 更改日志:1.3.3 - 2016年4月5日[...]
[...]
db2dz4w82#
我建议您可以在PhoneFormItemView中实现这一点。您可以使用模型的destroy方法在单击.remove_phone_number-btn时创建一个事件,如下面的代码所示:
PhoneFormItemView
destroy
.remove_phone_number-btn
var PhoneFormItemView = Marionette.View.extend({ className: 'row', template: _.template('<div><input type="text" value="<%- type %>"><input type="text" value="<%- local_number %>"></div><button type="button" class="remove_phone_number-btn">Remove</button>'), events: { 'click .remove_phone_number-btn': 'removePhoneNumberHandler' }, removePhoneNumberHandler: function() { this.model.trigger('destroy', this.model); }});var PhoneFormListView = Marionette.CollectionView.extend({ className: 'phone-form-item', childView: PhoneFormItemView});
var PhoneFormItemView = Marionette.View.extend({
className: 'row',
template: _.template('<div><input type="text" value="<%- type %>"><input type="text" value="<%- local_number %>"></div><button type="button" class="remove_phone_number-btn">Remove</button>'),
events: {
'click .remove_phone_number-btn': 'removePhoneNumberHandler'
},
removePhoneNumberHandler: function() {
this.model.trigger('destroy', this.model);
}
});
var PhoneFormListView = Marionette.CollectionView.extend({
className: 'phone-form-item',
childView: PhoneFormItemView
使用this.model.trigger('destroy', this.model);而非this.model.destroy();的原因是,后者将发送服务器调用,甚至从服务器中删除模型,而前者将从集合中删除模型,并从DOM中删除PhoneFormItemView,然后更新集合。
this.model.destroy();
2条答案
按热度按时间eblbsuwk1#
在Backbone 1.3.3中,它可以正常工作。
从Marionette 3.2.0 readme:
兼容性和要求
MarionetteJS目前使用以下库:
从 Backbone.js 更改日志:
1.3.3 - 2016年4月5日
[...]
[...]
db2dz4w82#
我建议您可以在
PhoneFormItemView
中实现这一点。您可以使用模型的destroy
方法在单击.remove_phone_number-btn
时创建一个事件,如下面的代码所示:使用
this.model.trigger('destroy', this.model);
而非this.model.destroy();
的原因是,后者将发送服务器调用,甚至从服务器中删除模型,而前者将从集合中删除模型,并从DOM中删除PhoneFormItemView
,然后更新集合。