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
事件也只觸發一次。就好像集合已經變成不可變的了。我錯過了一些明顯的事情嗎?感謝您提前給予任何幫助...
非常感謝,它的工作。我只是希望他們給了我一些關於'id'的特殊含義的警告,或者拋出了一個錯誤/異常。在控制檯中,好像每件事情都很好。 – Vignesh 2012-07-09 07:47:42
是不是主幹應該檢查cid ID爲空時? – ScorpionKing2k5 2016-05-19 03:09:16
找到我的困境的答案 - 如果ID是'未定義',那麼集合可以繼續添加其他具有未定義ID的模型。但是,如果它們是「」(空字符串),則阻止添加。 – ScorpionKing2k5 2016-05-19 03:18:34