gpt4 book ai didi

javascript - Backbone Collection.add 似乎不起作用

转载 作者:搜寻专家 更新时间:2023-11-01 04:58:03 25 4
gpt4 key购买 nike

我正在主干中构建一个简单的待办事项应用程序。我的 html 是:

<!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 的模型。如果您要添加具有不同 id 的模型,一切都应该可以正常工作。在你的情况下,如果你真的不打算自己管理 id,你可以在模型实例化时省略它们,并让主干为你生成它们。

关于javascript - Backbone Collection.add 似乎不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11390602/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com