簡體   English   中英

骨干集合添加事件未觸發

[英]Backbone collection add event not firing

我正在編寫通常在網上找到的Backbone Todos應用程序的稍作修改的版本,而是使用書籍。 我的骨干網版本是1.3.3。 像示例一樣,現在我只是試圖顯示用戶在輸入列表中添加的書名。 我的代碼(部分)如下:

app.BookList = Backbone.Collection.extend({
  model: app.Book,
  // For temp use, to be replaced with URL
  localStorage: new Backbone.LocalStorage('BookList')
});

app.bookList = new app.BookList();


app.AppView = Backbone.View.extend({
  el: '#app',

  initialize: () => {
    this.input = this.$('#book-name');
    app.bookList.on('change', this.addOneBook, this);
    app.bookList.fetch();
  },

  events: {
    'keypress #book-name': 'createNewBookModel'
  },

  addOneBook: (book) => {
    console.log('BOOK: ', book);
    const b = new app.BookView({ model: book });
    this.$('#bookList').append(b.render().el());
  },

  createNewBookModel: (e) => {
    if (e.which === 13) {
        e.preventDefault();
        app.bookList.create({ title: this.input.val().trim() });
      this.input.val('');
    }
  }

});


app.appView = new app.AppView();

我的問題是,在createNewBookModel事件已觸發並完成后, addOneBook事件未觸發。 我的理解(閱讀本文-http://backbonejs.org/#Collection-create )是,創建模型將觸發集合上的add事件。 我嘗試使用bind而不是on ,但這沒有用。 我也嘗試使用this.listenTo代替on ,但這引發了錯誤,說this.listenTo未定義。 請幫忙。 謝謝!

我從未廣泛使用過ES6 箭頭功能 ,但我認為它們可能在這里給您帶來麻煩。 據我了解,箭頭函數不會綁定this對象。 在執行函數時, this函數的值將評估為undefined,甚至可能是window父對象,但我認為您希望其對主干對象進行評估。

嘗試更換:

initialize: () => {
  // ...
},

與:

initialize: function() {
  // ...
},

和其他方法類似。 我認為這將解決許多問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM