Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 03.02.2012, 18:58
Аватар для nasqad
Куратор
Отправить личное сообщение для nasqad Посмотреть профиль Найти все сообщения от nasqad
 
Регистрация: 18.09.2011
Сообщений: 443

backbone, вопросов 9000
как то мне сложно очень дается backbone, код с ним выходит обьемный так что начну с отрывков.

window.content = Backbone.Model.extend({
            url : "ajax/lenta",
            isValid : function(attr) {
                attr = attr || this.attributes;
                if(!attr.author || !attr.text) {
                    return 'Require`s attribute missed';
                }
            }
        });

обьявляем метод isValid для проверки атрибутов модели перед отправкой запроса, все работает ок, но это стандартный подход.
if(!this.model.isValid()) {
	this.model.save(null, {
		success : function() {
			self.model.clear();
			self.render();
		}
	});
} else {
	this.el.find('.error').show().text('Missed attribute');
}

Как реализовать с использованием validate или других правильных методов? да validate генерит эвент error перед отправкой запроса, но остановить запрос это никак не помогает T_T
Ответить с цитированием
  #2 (permalink)  
Старый 05.02.2012, 01:39
Аватар для nasqad
Куратор
Отправить личное сообщение для nasqad Посмотреть профиль Найти все сообщения от nasqad
 
Регистрация: 18.09.2011
Сообщений: 443

продолжаю оставлять отрывки

app.Collection = Backbone.Collection.extend({
                query : '',
                url : function() {
                    return 'ajax/auc/' + Base64.encode(this.query);
                }
      });  
       app.Controller = Backbone.Router.extend({
                target : $('#panel'),
                initialize : function() {
                    _.bindAll(this, 'keyup');
                    this.target.on('keyup', this.keyup);
                },
                keyup : function() {
                    this.collection.query = this.target.val();
                    this.collection.fetch();
                }
       });


как правильно передавать информацию в REST формате используя встроенный функционал backbone?
возьмем например автокомплит, в коллекции хранится response, под сам поисковый запрос или аттрибут коллекции или напрямую передавать в fetch({data:{query:123}})
вообщем как собственно fetch`нуть коллекцию через /ajax/auc/:query
Ответить с цитированием
  #3 (permalink)  
Старый 18.02.2012, 22:08
Аватар для DreamTheater
Профессор
Отправить личное сообщение для DreamTheater Посмотреть профиль Найти все сообщения от DreamTheater
 
Регистрация: 15.02.2011
Сообщений: 440

Сообщение от nasqad Посмотреть сообщение
как то мне сложно очень дается backbone, код с ним выходит обьемный так что начну с отрывков.

window.content = Backbone.Model.extend({
            url : "ajax/lenta",
            isValid : function(attr) {
                attr = attr || this.attributes;
                if(!attr.author || !attr.text) {
                    return 'Require`s attribute missed';
                }
            }
        });

обьявляем метод isValid для проверки атрибутов модели перед отправкой запроса, все работает ок, но это стандартный подход.
if(!this.model.isValid()) {
	this.model.save(null, {
		success : function() {
			self.model.clear();
			self.render();
		}
	});
} else {
	this.el.find('.error').show().text('Missed attribute');
}

Как реализовать с использованием validate или других правильных методов? да validate генерит эвент error перед отправкой запроса, но остановить запрос это никак не помогает T_T
Вы сделали неправильно, проверяющую функцию нужно задавать в виде атрибута validate. Если функция не возвращает ничего, то это означает что ошибок нету, если возвращает текст, то он интерпретируется как сообщение об ошибке. Метод isValid позволяет в любой момент принудителньо запустить валидацию модели, его не стоило переопределять вообще.
Ответить с цитированием
  #4 (permalink)  
Старый 18.02.2012, 22:55
Аватар для nasqad
Куратор
Отправить личное сообщение для nasqad Посмотреть профиль Найти все сообщения от nasqad
 
Регистрация: 18.09.2011
Сообщений: 443

м спасибо, правда уже разобрался, у меня сейчас больше вопросы вида
"как организовать взаимодействие с родительским представлением и ее коллекцией" T_T
например в этом примере вьюшка производит изменения в элементах не принадлежащих её зоне ответственности, при том событие надо обрабатывать с учетом модели вызвавшей её -_- вариантов реализации много но они все корявые, и это приводит к мысли что изначально структура приложения выбрана неверная, понимание этого отнимает очень много времени
http://pastebin.com/NFTceTL8
Ответить с цитированием
  #5 (permalink)  
Старый 18.02.2012, 23:11
Аватар для DreamTheater
Профессор
Отправить личное сообщение для DreamTheater Посмотреть профиль Найти все сообщения от DreamTheater
 
Регистрация: 15.02.2011
Сообщений: 440

Сообщение от nasqad Посмотреть сообщение
м спасибо, правда уже разобрался, у меня сейчас больше вопросы вида
"как организовать взаимодействие с родительским представлением и ее коллекцией" T_T
например в этом примере вьюшка производит изменения в элементах не принадлежащих её зоне ответственности, при том событие надо обрабатывать с учетом модели вызвавшей её -_- вариантов реализации много но они все корявые, и это приводит к мысли что изначально структура приложения выбрана неверная, понимание этого отнимает очень много времени
http://pastebin.com/NFTceTL8
Не понял суть проблемы, можете перефразировать свой вопрос?
Ответить с цитированием
  #6 (permalink)  
Старый 18.02.2012, 23:23
Аватар для nasqad
Куратор
Отправить личное сообщение для nasqad Посмотреть профиль Найти все сообщения от nasqad
 
Регистрация: 18.09.2011
Сообщений: 443

ну мне кажется такие вопросы сложно решить без полного тз и кода, так что это риторический вопрос был

setStatus: function (e) {
            this.model.save(null, {
                success: function (model, response) {
                    $(e.target).parents('ul').find('.active').removeClass('active');
                    $(e.target).parents('li').addClass('active');
                    $(e.target).parent().hide();
                }
            })
        }

вот таке кусочки кода мне кажутся ошибочными, тут должно быть что то вроде this.model.setActive();, но так как пункт меню активный может быть лишь один, надо перебрать все элементы коллекции которая принадлежит уже другой вьюшке, после чего перерисовать всю коллекцию, что тоже весьма досадно) вообщем я не умею формировать вопросы но все равно спасибо

проблема в том что если есть две цепочки
a) model-view
b) model-collection-view
то обратится от a-view к b-collection не представляется возможным без каких то извращений
Ответить с цитированием
  #7 (permalink)  
Старый 18.02.2012, 23:49
Аватар для DreamTheater
Профессор
Отправить личное сообщение для DreamTheater Посмотреть профиль Найти все сообщения от DreamTheater
 
Регистрация: 15.02.2011
Сообщений: 440

У вас не совсем полное видение MVC. Согласно классическому паттерну представление может напрямую использовать методы модели (так как написано у Вас), а модель может косвенно вызывать методы представлений используя события. То есть Вам нужно подписать ту самую "левую вьюху" на событие change модели и написать в ней метод для перерисовки меню (или что там Вам нужно).

В итоге цепочка будет выглядеть так: view_1 call model_1 trigger event view_2
То есть мы косвенно сделали так: view_1 call view_2

Последний раз редактировалось DreamTheater, 19.02.2012 в 00:03.
Ответить с цитированием
  #8 (permalink)  
Старый 21.02.2012, 17:03
Аватар для nasqad
Куратор
Отправить личное сообщение для nasqad Посмотреть профиль Найти все сообщения от nasqad
 
Регистрация: 18.09.2011
Сообщений: 443

cпасибо ссылка на вики помогла, я к сожалению вынужден революционным методом входить в паттерны проектирования

теперь однако все равно остается вопрос, насколько детализировать внутренние евенты, тоесть если реакция на событие может быть в отношении двух элементов, то вешать обработчик события в каждом представлении или же обрабатывать все в одном, но с этим я позже сам разберусь, наверное ключевое тут поддержание уровня абстракции

насущный вопрос, есть несколько приложений(модулей) автономных, которые при инициализации запрашивают с серва коллекции

при обьединении их в более крупное приложение, они соответственно выстреливают 3-4-5 запросов одновременно, + автообновление каждые Х секунд таким же кол-вом запросов
их скорей всего надо обьединить в один запрос от вышестоящего приложения? или же много-запросов - нормальная практика?
в случае делегирования "запроса с серва" во вне конкретных модулей, мне кажется они потеряют свою автономность и это нехорошо -_-
Ответить с цитированием
  #9 (permalink)  
Старый 21.02.2012, 17:29
Аватар для DreamTheater
Профессор
Отправить личное сообщение для DreamTheater Посмотреть профиль Найти все сообщения от DreamTheater
 
Регистрация: 15.02.2011
Сообщений: 440

Сообщение от nasqad Посмотреть сообщение
насущный вопрос, есть несколько приложений(модулей) автономных, которые при инициализации запрашивают с серва коллекции

при обьединении их в более крупное приложение, они соответственно выстреливают 3-4-5 запросов одновременно, + автообновление каждые Х секунд таким же кол-вом запросов
их скорей всего надо обьединить в один запрос от вышестоящего приложения? или же много-запросов - нормальная практика?
в случае делегирования "запроса с серва" во вне конкретных модулей, мне кажется они потеряют свою автономность и это нехорошо -_-
Сингелтон Вам в помощь
Ответить с цитированием
  #10 (permalink)  
Старый 23.02.2012, 00:52
Аватар для nasqad
Куратор
Отправить личное сообщение для nasqad Посмотреть профиль Найти все сообщения от nasqad
 
Регистрация: 18.09.2011
Сообщений: 443

Сингелтон сложнота, точнее я не понял как это применить к моей задаче, так то вроде бекбоне роутер сам являет собой синглетон, с этим я разберусь когда буду готов к профессиональному коду, cпасибо
простой вопрос, внезапно заметил что бекбоне вешает новым элементам вьюшек id="%model-id", раньше вроде не было, можно как то отказаться от этого бонуса кроме переназначения?
кроме того, есть какая то альтернатива requirejs для серверной стороны, максимально простая? быстрый поиск ничего актуального не дал, requirejs нужен лишь в огромных проектах, кроме того он очень тяжеловесный, самому писать не хочется:3

Последний раз редактировалось nasqad, 23.02.2012 в 00:56.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Backbone, либо сам JS, либо я p00h Общие вопросы Javascript 2 26.08.2011 08:27
Несколько вопросов про jquery от новичка Delfi jQuery 3 24.11.2010 09:55
Пара вопросов по onClick yngwie19 Общие вопросы Javascript 3 17.08.2010 07:44
WYSIWYG | пару вопросов Geddar Элементы интерфейса 4 13.06.2010 09:25
Вопросов несколько, так что опишу их дальше=) TrooMan Javascript под браузер 25 23.03.2010 18:02