Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.03.2016, 14:35
Новичок на форуме
Отправить личное сообщение для Mister N Посмотреть профиль Найти все сообщения от Mister N
 
Регистрация: 11.05.2012
Сообщений: 7

Отслеживание изменений
Народ, подскажите как правильно следить за изменениями scop?
Я в принципе делаю код, который выполняет задачу, но вопрос в том, нельзя ли это выполнить проще и нет ли каких для этого готовых механизмов?
Я хотел бы иметь функцию, похожую на model.changedAttributes в backbone
Т.е. чтобы можно было сколько угодно изменять данные, но ушли они бы только при нажатии кнопки "сохранить". Чтобы можно было дернуть только измененные данные и отправить их на сервер.
Я делаю сервис, который в сокращенном виде выглядит так:
app.factory('dataService', function($http){
                return {
                    id:{{$id}},
                    obj:JSON.parse('{!! $object !!}'),
                    changedAttributes:{},
//                    srid: this.obj.srid,
                    constract:function(scope){
                        this.scope = scope;

                        // загружаем scope стандартными данными. Оставил одну строку
                        scope.object = this.obj;

                       // загружаю разными данными т.к. иметь scope прям здесь удобно. Хотя, похоже я сильно загрузил сервис методами и часть нужно вернуть все-таки контроллеру.
                       //.....
                       var self = this;
                        // следим за изменениями в объекте
                        scope.$watchCollection(function(scope) { return scope.object }, function(newValue, oldValue) {
                            if(newValue == oldValue) return;

                            console.log('зафиксировано изменение!');

                            for(var k in newValue)
                                if(oldValue[k] !== newValue[k]) {
                                    console.log('хлюч ' + k, 'значение ' + newValue[k]);
                                    self.changedAttributes[k] = newValue[k];
                                }
                        });


                    },

                    save: function(){
                        // здесь отправляю на сервер previousAttributes и id и при успехе делаю ряд манипуляций.
                    }

                    // ряд других методов.

                }
            });

Далее в контроллере я вызываю dataService.constract($scope) и другие методы сервиса вызываются по кликанью по кнопкам.
Но я повторюсь в чем вопрос: нет ли стандартных методов для подобных вещей или каких-то общепризнанных практик?
ЗЫ а может быть в ангуляре есть события? А то видел только из директив.

Последний раз редактировалось Mister N, 16.03.2016 в 15:47.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отслеживание css состояния объекта Nifler Events/DOM/Window 6 28.04.2015 21:05
Отслеживание изменений value в input kosar Events/DOM/Window 6 03.08.2012 16:05
Отслеживание событий в Google Analytics fry2 Events/DOM/Window 1 08.05.2012 20:08
js отслеживание активной вкладки браузера okapo Javascript под браузер 3 17.04.2011 15:55
Отслеживание нажатия комбинации клавиш MCTrane Общие вопросы Javascript 10 06.02.2011 07:04