Я замечаю, когда у меня есть такой код: http://jsfiddle.net/MtULf/1/Backbone.Model `defaults` вмешивается в` set`?
window.Todo = Backbone.Model.extend({
defaults: {
"title": ""
},
validate: function() {
if (this.get("title") === "")
return "Title is missing!"
}
});
var todo = new Todo();
console.log("Expects blank: ", todo.get("title"));
todo.set({ title: "A valid title" });
console.log("Expects 'A valid title': ", todo.get("title"));
todo.set("title", "");
console.log("Expects blank: ", todo.get("title"));
Все set(...)
, кажется, не в состоянии: todo.get("title")
всегда возвращает пустую строку
Однако, если я удалить defaults
, я получаю ожидаемый результат: http://jsfiddle.net/MtULf/2/
window.Todo = Backbone.Model.extend({
validate: function() {
if (this.get("title") === "")
return "Title is missing!"
}
});
В этом проблема. После создания модели с помощью функции проверки достоверности. Каждый набор проверяется с использованием этой функции. ** Если вы не укажете атрибуты во время строительства **, то по умолчанию применяются автоматически. Следовательно, 'var todo = new Todo();' будет делать 'title =" "и' todo.set ({title: "Valid title"}); 'будет терпеть неудачу, потому что ваша функция validate возвращает ошибку. Все, что вам нужно сделать, это «var todo = new Todo» ({title: «A New Title»}); ' – Deeptechtons
Я думаю, что потерял вас на« * и 'todo.set ({title:« Valid title »})' не будет работать, потому что ваша функция проверки возвращает ошибку * ". Почему устанавливается 'title =" Valid title "' fail? U означает, что конструктор потерпит неудачу или что-то еще? – jm2
вы можете взглянуть на эту скрипку, которую я сделал для вас http://jsfiddle.net/MtULf/5/ – Deeptechtons