Новичок
Покинул форум
Сообщений всего: 26
Дата рег-ции: Март 2015
Помог: 0 раз(а)
|
Доброго времени суток. Пытаюсь разобраться с backbone.js, я новичок и в backbone да и вобще в js
Есть вот такой код
CODE ( javascript):
скопировать код в буфер обмена
var TodoItemView = Backbone.View.extend({ tagName: 'li', events: { "click #delete" : "deleteTodo", "click #check" : "toggle", "dblclick #todo-text" : "edit", "blur .edit" : "close", "keypress .edit" : "updateOnEnter" }, initialize: function() { this.template = _.template($("#tmpl-each-item").html()); //this.listenTo(this.model, 'destroy', ); }, render: function() { $(this.el).html(this.template(this.model.toJSON())); this.$el.toggleClass('done', this.model.get('done')); this.$('input').prop('checked', this.model.get('done')); this.input = this.$('.edit'); return this; }, deleteTodo: function(){ this.model.destroy({ success: function(){ app.todoList.trigger('change'); } }) }, edit: function(){ // since we didn`t specify el, it is by default our tagName (<li>) this.$el.addClass("editing"); this.input.focus(); }, updateOnEnter: function(e){ if (e.keyCode == 13) this.close(); }, close: function(todo) { value = this.input.val(); console.log(this.model); this.model.save({"text": value}); this.$el.removeClass("editing"); }, toggle: function(){ this.model.toggle(); } });
Стянул его с какого то манулала на хабре, пытаюсь разобраться. Но есть некоторые моменты непонятные мне
Я не могу понять откуда беруться значения todoList, в 28 строке? Не понимаю что делает в целом app.todoList.trigger('change');
И когда я делаю свой аналог, с другими переменными у меня почему то тудушка удаляется но страница не обновляется, т.е. нажал кнопку удалить, из бд удалилать, а на экране исчезает только после обновления страницы. я понимаю что нужно что то сделать в callback. Обьясните пожалуйста в чем причина? Свой код прилагаю.
CODE ( javascript):
скопировать код в буфер обмена
'use strict'; define( [ 'jquery', 'bootstrap', 'underscore', 'backbone' ], function ($, bootstrap, _, Backbone){ var userView = Backbone.View.extend({ tagName: 'li', events: { 'click #del': 'delete' }, initialize: function() { this.template = _.template($('#tmpl-each-item').html()); }, render: function() { $(this.el).html(this.template(this.model.toJSON())); return this; }, delete: function() { this.model.destroy({ success: function(){ console.log('deleted'); } }) } }); return userView; });
P.S. консоль отображает deleted, как положено может надо в succsess нужно еще раз рендерить, или я вобще не понимаю, запутался в общем.
P.P.S Пробовал по аналогии добавить в
CODE ( javascript):
скопировать код в буфер обмена
delete: function() { this.model.destroy({ success: function(){ app.userList.trigger('change'); console.log('deleted'); } }) }
и все равно с экрана пропадает только после обновления страницы
|