0
我有一個小表單來添加一個項目,以及一個列出所有項目的集合視圖。不過,我沒有看到,這裏的/如何調用呈現一個新項目:如何使用Backbone和CoffeeScript將新項目呈現給集合?
表單視圖:
class FastTodo.Views.AddTodoItem extends Backbone.View template: JST['todo_items/add_item'] el: '#main' events: 'submit': 'addItem' addItem: (event) -> event.preventDefault() @collection.create task: $('#task').val() render: -> $(@el).html @template() initialize: -> @collection = new FastTodo.Collections.TodoItems() @render()
集合視圖:
class FastTodo.Views.TodoItemsIndex extends Backbone.View template: JST['todo_items/index'] render: -> console.log("render") renderOne: (item) -> console.log(item) initialize: -> @collection = new FastTodo.Collections.TodoItems() @collection.bind 'reset', => @render() @collection.on 'add', (item) => console.log('addd') @renderOne(item) @collection.fetch()
我希望在控制檯輸出顯示一個新項目。但是,我看到:
如何呈現在收集新的項目? (或者顯示renderOne被觸發?)
你在哪裏創建'AddTodoItem'視圖?當您嘗試使用它創建新的待辦事項時,您未在創建時向其傳遞集合,導致出現「未定義」錯誤。 – neebz 2013-03-03 11:44:44
這確實是我的問題,我想在路由器級別創建所有視圖。任何其他選項可以將集合綁定到多個視圖,而不必將集合從一個視圖傳遞到另一個視圖? – poseid 2013-03-03 12:52:27
你應該有一個全局的應用程序變量,基本上初始化所有的東西,路由器,視圖,模型等(如傳統語言中的主要功能)你可以將集合附加到該全局變量,並讓視圖從那裏訪問它。說這不是一個好策略。如果你的應用程序想要訪問一個集合,它應該直接或通過父視圖傳遞給它,如果有的話。 – neebz 2013-03-03 17:09:58