为什么我无法从 Backbone.js 集合中删除模型?

6kkfgxo0  于 2022-11-10  发布在  其他
关注(0)|答案(2)|浏览(197)

当我尝试从集合中移除模型时,收到错误:

  1. Cannot read property 'removed' of undefined

如果我单击两次,它就会工作。
第一个

eblbsuwk

eblbsuwk1#

在Backbone 1.3.3中,它可以正常工作。
Marionette 3.2.0 readme
兼容性和要求
MarionetteJS目前使用以下库:

  • jQuery 1.8以上版本
  • 下划线v1.8.3
  • Backbone.js 网v1.3.3
  • Backbone 无线电v2.0.0+

从 Backbone.js 更改日志:
1.3.3 - 2016年4月5日
[...]

  • 添加了选项。更改了集合“更新”事件,其中包括添加、合并和删除的模型。

[...]

展开查看全部
db2dz4w8

db2dz4w82#

我建议您可以在PhoneFormItemView中实现这一点。您可以使用模型的destroy方法在单击.remove_phone_number-btn时创建一个事件,如下面的代码所示:

  1. var PhoneFormItemView = Marionette.View.extend({
  2. className: 'row',
  3. 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>'),
  4. events: {
  5. 'click .remove_phone_number-btn': 'removePhoneNumberHandler'
  6. },
  7. removePhoneNumberHandler: function() {
  8. this.model.trigger('destroy', this.model);
  9. }
  10. });
  11. var PhoneFormListView = Marionette.CollectionView.extend({
  12. className: 'phone-form-item',
  13. childView: PhoneFormItemView
  14. });

使用this.model.trigger('destroy', this.model);而非this.model.destroy();的原因是,后者将发送服务器调用,甚至从服务器中删除模型,而前者将从集合中删除模型,并从DOM中删除PhoneFormItemView,然后更新集合。

展开查看全部

相关问题