Показать сообщение отдельно
  #2 (permalink)  
Старый 12.02.2016, 10:09
Аватар для armidoll
Кандидат Javascript-наук
Отправить личное сообщение для armidoll Посмотреть профиль Найти все сообщения от armidoll
 
Регистрация: 28.05.2015
Сообщений: 116

Сообщение от alexandr2006 Посмотреть сообщение
Запускаю, но title у страницы почему-то выводится "Todo title", а не "myTodo title" и значение title тоже не меняется. Почему?
this.model.docTitle;

Это свойство объекта, которое в данном случае берется из прототипа (из конструктора) __proto__.docTitle и значение которого было задано в:

var Todo = Backbone.Model.extend({

    defaults : {title:'old', completed: true},
    docTitle : 'Todo title'

});


Оно не было изменено в дальнейшем кодом:
var myTodo = new Todo ({docTitle:'myTodo title',completed: false, title: 'new'});


который записывает значение не в __proto__.docTitle , а в attributes.docTitle

измените (как вариант):

document.title = this.model.docTitle;

на
document.title = this.model.attributes.docTitle;

или через API библиотеки Backbone:
document.title = this.model.get('docTitle');


Сообщение от alexandr2006 Посмотреть сообщение
Далее когда я щелкаю по тегу форм, console.log(this.$el === e.target); почему-то выдает false. Почему?
this.$el содержит ссылку на элемент input#todo_complete
e.target содержит ссылку на элемент form#todo

Это разные объекты, поэтому результат их сравнения через "===" false

Измените временно код на:
click_function: function(e){
        console.log(e.target.tagName);

        console.log('e.target : ');
        console.dir(e.target);

        console.log('this.$el : ');
        console.dir(this.$el);

        console.log(this.$el === e.target);
    }


и посмотрите самостоятельно, что там содержится

Последний раз редактировалось armidoll, 12.02.2016 в 11:29.
Ответить с цитированием