Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Основы backbone.js

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Xenox
Отправлено: 13 Октября, 2015 - 10:19:04
Post Id


Новичок


Покинул форум
Сообщений всего: 26
Дата рег-ции: Март 2015  


Помог: 0 раз(а)




Доброго времени суток. Пытаюсь разобраться с backbone.js, я новичок и в backbone да и вобще в js
Есть вот такой код

CODE (javascript):
скопировать код в буфер обмена
  1. var TodoItemView = Backbone.View.extend({
  2.         tagName: 'li',
  3.         events: {
  4.                 "click #delete" : "deleteTodo",
  5.                 "click #check" : "toggle",
  6.                 "dblclick #todo-text" : "edit",
  7.                 "blur .edit" : "close",
  8.                 "keypress .edit" : "updateOnEnter"
  9.  
  10.         },
  11.         initialize: function() {
  12.                 this.template = _.template($("#tmpl-each-item").html());
  13.                 //this.listenTo(this.model, 'destroy', );
  14.         },
  15.         render: function() {
  16.                 $(this.el).html(this.template(this.model.toJSON()));
  17.                 this.$el.toggleClass('done', this.model.get('done'));
  18.                 this.$('input').prop('checked', this.model.get('done'));
  19.                 this.input = this.$('.edit');
  20.                 return this;
  21.         },
  22.         deleteTodo: function(){
  23.                 this.model.destroy({
  24.                         success: function(){
  25.                                 app.todoList.trigger('change');
  26.                         }
  27.                 })
  28.         },
  29.         edit: function(){
  30.                 // since we didn`t specify el, it is by default our tagName (<li>)
  31.                 this.$el.addClass("editing");
  32.                 this.input.focus();
  33.         },
  34.         updateOnEnter: function(e){
  35.                 if (e.keyCode == 13) this.close();
  36.         },
  37.         close: function(todo) {
  38.                 value = this.input.val();
  39.                 console.log(this.model);
  40.                 this.model.save({"text": value});
  41.                 this.$el.removeClass("editing");
  42.         },
  43.         toggle: function(){
  44.                 this.model.toggle();
  45.         }
  46.  
  47. });


Стянул его с какого то манулала на хабре, пытаюсь разобраться. Но есть некоторые моменты непонятные мне
Я не могу понять откуда беруться значения todoList, в 28 строке? Не понимаю что делает в целом app.todoList.trigger('change');
И когда я делаю свой аналог, с другими переменными у меня почему то тудушка удаляется но страница не обновляется, т.е. нажал кнопку удалить, из бд удалилать, а на экране исчезает только после обновления страницы. я понимаю что нужно что то сделать в callback. Обьясните пожалуйста в чем причина? Свой код прилагаю.

CODE (javascript):
скопировать код в буфер обмена
  1. 'use strict';
  2.  
  3. define(
  4.         [
  5.         'jquery',
  6.         'bootstrap',
  7.         'underscore',
  8.         'backbone'
  9.         ],
  10.         function ($, bootstrap, _, Backbone){
  11.                 var userView = Backbone.View.extend({
  12.                         tagName: 'li',
  13.                         events: {
  14.                                 'click #del': 'delete'
  15.                         },
  16.                         initialize: function() {
  17.                                 this.template = _.template($('#tmpl-each-item').html());
  18.                         },
  19.                         render: function() {
  20.                                 $(this.el).html(this.template(this.model.toJSON()));
  21.                                 return this;
  22.                         },
  23.                         delete: function() {
  24.                                 this.model.destroy({
  25.                                         success: function(){
  26.                                                 console.log('deleted');
  27.                                         }
  28.                                 })
  29.                         }
  30.                 });
  31.                
  32.                 return userView;
  33.         });



P.S. консоль отображает deleted, как положено может надо в succsess нужно еще раз рендерить, или я вобще не понимаю, запутался в общем.

P.P.S Пробовал по аналогии добавить в

CODE (javascript):
скопировать код в буфер обмена
  1. delete: function() {
  2.                                 this.model.destroy({
  3.                                         success: function(){
  4.                                                 app.userList.trigger('change');
  5.                                                 console.log('deleted');
  6.                                         }
  7.                                 })
  8.                         }



и все равно с экрана пропадает только после обновления страницы
 
 Top
DelphinPRO
Отправлено: 13 Октября, 2015 - 13:19:31
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




delete - зарезервированное слово в js, я бы не стал его использовать для именования своих объектов.

app.todoList.trigger('change'); - вызывает (генерирует) событие 'change' на элементе todoList


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Xenox
Отправлено: 14 Октября, 2015 - 17:36:13
Post Id


Новичок


Покинул форум
Сообщений всего: 26
Дата рег-ции: Март 2015  


Помог: 0 раз(а)




DelphinPRO пишет:
delete - зарезервированное слово в js, я бы не стал его использовать для именования своих объектов.

app.todoList.trigger('change'); - вызывает (генерирует) событие 'change' на элементе todoList


Спасибо большое за ответ, разобрался уже, помогла такая конструкция -

CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. delete: function() {
  3.                                 var self = this;
  4.                                 this.model.destroy({
  5.                                         success: function(){
  6.                                                 self.$el.remove();
  7.                                                 console.log('deleted');
  8.                                         }
  9.                                 })
  10.                         }
  11.  


По поводу delete учту. Еще раз спасибо!
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB