Зачем все впадают в крайности? Сложный интерфейс с MVC на клиенте должен быть хорошо спроектирован, нужно все взвешивать и решать, что можно делать асинхронно, а что нет.
Даже если ожидание ответа от сервера, блокирует только часть интерфейса/функционала и пользователю есть чем заняться пока ваш сервер работает — вот он, асинхронный ui.
Вы все правильно поняли. «Стандартная реализация» дополнительных действий при синхронизации с сервером — переопределить / переписать Backbone.sync.
Только сделали вы это немного варварски.
Более правильно — добавить нужную логику, а не полностью переписывать все, что не устраивает, например:
var SomeModel = Backbone.Model.extend({
…
sync: function(method, model, options) {
var myOptions = options;
if (method == 'create') {
myOptions.success = function(resp, status, xhr) {
if (resp.has_error) {
console.log('Error', resp);
return;
}
Код у вас во вьюхах ужасный. Зачем использовать data-аттрибуты для хранения данных, которые вы храните в модели? Почему не используете delegateEvents для обработки событий вьюхи?
MovieClip-у можно задать имя и по имени обращаться из кода.
Основное отличие насколько я понимаю, в том, что MovieClip проигрывает кадры внутри себя, а кадры внутри Graphics проигрываются его родителем.
Т.е. если сделать Graphics с пятью кадрами и поместить его на сцену с тремя, воспроизводиться будут только три кадра из Graphics, MovieClip же будет проигрывать все свои кадры в каждом кадре родителя.
Ну хоть кого-то он устраивает :)
Даже если ожидание ответа от сервера, блокирует только часть интерфейса/функционала и пользователю есть чем заняться пока ваш сервер работает — вот он, асинхронный ui.
Только сделали вы это немного варварски.
Более правильно — добавить нужную логику, а не полностью переписывать все, что не устраивает, например:
К чему тогда относиться ваше «как это сделать со стандартной реализацией»?
Если единоразово — в методы save и fetch можно передавать хэш с настройками для jQuery.ajax:
Можно переопределить метод sync для конкретной модели или коллекции:
Ну и наконец, можно расширить Backbone.sync, а не переписать полностью:
Посмотрите хороший скринкаст (peepcode).
Last updated 2008-04-14
Ну и как минимум можно подсмотреть удачные решения для своего велосипеда :)
Чтобы избежать путаницы использую только мувики. Но ваша идея интересна, надо попробовать
Основное отличие насколько я понимаю, в том, что MovieClip проигрывает кадры внутри себя, а кадры внутри Graphics проигрываются его родителем.
Т.е. если сделать Graphics с пятью кадрами и поместить его на сцену с тремя, воспроизводиться будут только три кадра из Graphics, MovieClip же будет проигрывать все свои кадры в каждом кадре родителя.