2012-06-11 75 views
0

我剛剛開始使用backbone.js並遵循一些簡單的教程,儘管我在路上碰到了一個碰撞。我似乎不能讓FriendCollection.add方法運行。我沒有得到任何錯誤。有什麼我失蹤?我相信它與這個.FriendCollection.add(friend_model)有關。嘗試從backbone.js中的視圖中調用collection中的方法

var Friend = Backbone.Model.extend({}); 

var FriendCollection = Backbone.Collection.extend 
({ 
    initalize: function(models,options) 
    { 
     this.bind("add", options.view.addFriendLi); 
    } 
}); 

var FriendModel = Backbone.Model.extend 
({ 
    name:null 
}); 

var AppView = Backbone.View.extend 
({ 
    el:$("body"), 

    initialize: function() 
    { 
     this.FriendCollection = new FriendCollection(null,{view:this}); 
    }, 

    events: 
    { 
     "click #add-friend":"showPrompt", 
    }, 

    showPrompt: function() 
    { 
     var friend_name = prompt("Who is your friend?"); 
     var friend_model = new FriendModel({name:friend_name}); 
     this.FriendCollection.add(friend_model); 
    }, 

    addFriendLi: function(model) 
    { 
     $("#friends-list").append("<li>"+model.get('name') + "</li>"); 
    }, 
}); 

$(document).ready(function() 
{ 
    var appview = new AppView; 
}); 
+0

[我覺得應該是'on'不'bind'](http://documentcloud.github.com/backbone/#Collection-add) – asawyer

+0

沒有什麼變化,依然沒有觸發法「增加「 – mcclennon19

+0

@asawyer:'bind'已被棄用以支持'on'(爲了更好地匹配jQuery的名字AFAIK),但仍然支持bind。 –

回答

3

您在FriendCollection拼錯initialize,所以你從來沒有真正集合結合鑑於通過。

var FriendCollection = Backbone.Collection.extend 
({ 
    initialize: function(models,options) // Fixed here 
    { 
     this.bind("add", options.view.addFriendLi); 
    } 
}); 
+1

謝謝,愚蠢的錯誤 – mcclennon19

相關問題