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

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

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

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时创建一个事件,如下面的代码所示:

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,然后更新集合。

相关问题