2012-07-09 46 views
4

我正在骨幹中構建一個簡單的應用程序。 我的HTML是:Backbone Collection.add似乎不起作用

<!DOCTYPE html> 
<html> 
<head> 
<title>back bone</title> 
<script src="js/lib/jquery.js"></script> 
<script src="js/lib/underscore.js"></script> 
<script src="js/lib/backbone.js"></script> 

<link rel="stylesheet" href="bootstrap/css/bootstrap.min.css"/> 
<link rel="stylesheet" href="style.css" type="text/css" media="screen" /> 
</head> 
<body> 
<h2>Total Things Todo: <div id="no-todo"> 0 </div></h2> 
<ul id="todo-list" class="unstyled"> 
</ul> 
<div> 
<button class="btn" id="add-todo"><i class="icon-plus"></i>Add Todo</button> 
</div> 
<script src="js/script.js"></script> 

</body> 
</html> 

和我的骨幹代碼如下所示:

$(document).ready(function(){ 
    var Todo = Backbone.Model.extend({ 
     id: 0, 
     text:null, 
     completed: false 
    }); 
    var Todos = Backbone.Collection.extend({ 
     model:Todo, 
     initialize: function(models, options) { 
      this.on("add",options.view.addTodoLi); 
     } 
    }); 
    var AppView = Backbone.View.extend({ 
     el: $("body"), 
     initialize: function() { 
      this.todos = new Todos(null,//[{id: 0,completed: false,text: "helo"},{id: 1,completed: false,text: "bye"}], 
       {view: this }); 
     }, 
     events: { 
      "click #add-todo": "addTodo" 
     }, 
     addTodo: function() { 
      var todo_name = prompt("What do you have to do?"); 
      var todo_model = new Todo({id: 0,completed: false,text: todo_name}); 
      this.todos.add(todo_model); 
      console.log("todos",this.todos.toJSON(), 
       todo_name,todo_model.toJSON()); 
     }, 
     addTodoLi: function(model){ 
      $("#todo-list").append("<li><div class='done-false'><input type='checkbox'/>"+model.get("text")+"</div></li>"); 
     } 
    }); 
    var appview = new AppView; 
}); 

問題很簡單,對於在this.todos某種原因.add功能後第一時間不工作。 add事件也只觸發一次。就好像集合已經變成不可變的了。我錯過了一些明顯的事情嗎?感謝您提前給予任何幫助...

回答

11

集合只會阻止您添加具有相同的id。如果你要添加不同的模型id s一切都應該工作得很好。在你的情況下,如果你真的不打算自己管理ID,你可以在模型實例化時忽略它們,併爲你生成骨架。

+2

非常感謝,它的工作。我只是希望他們給了我一些關於'id'的特殊含義的警告,或者拋出了一個錯誤/異常。在控制檯中,好像每件事情都很好。 – Vignesh 2012-07-09 07:47:42

+0

是不是主幹應該檢查cid ID爲空時? – ScorpionKing2k5 2016-05-19 03:09:16

+0

找到我的困境的答案 - 如果ID是'未定義',那麼集合可以繼續添加其他具有未定義ID的模型。但是,如果它們是「」(空字符串),則阻止添加。 – ScorpionKing2k5 2016-05-19 03:18:34