Вопрос по backbone - не срабатывает событие
Только начинаю разбираться с backbone. Может кто подскажет, почему не срабатывает событие?
Test=Backbone.Model.extend({ constructor: function() { this.maewe=100; }, initialize:function(){ this.on('all',function(){ console.log('СОБЫТИЕ'); }) }, increase:function(){ this.maewe++; } }) $(document).ready(function() { var test=new Test(); $('#myButton').on('click',function(){ test.increase(); console.log(test.maewe); }); }) Тут для теста взял переменную maewe. При нажатии на кнопку #myButton запускаю функцию увеличивающую maewe на единицу. console.log(test.maewe); - пишет все верно 101,102,103 и т.д., но this.on('all',function(){ console.log('СОБЫТИЕ'); }) - не срабатывает, ставил - change:maewe - тот же результат. В чем тут может быть загвоздка? |
Во-первых, зачем тебе нужно переопределять конструктор? Во-вторых, используй геттеры и сеттеры, а не просто пиши свойства.
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8" <script src="http://code.jquery.com/jquery-1.11.0.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.7.0/underscore.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/backbone.js/1.1.2/backbone.js"></script> </head> <body> <button id="myButton">asd</button> <script> var Test = Backbone.Model.extend({ defaults: { maewe: 100 }, initialize: function() { this.on('all', function() { console.log('СОБЫТИЕ'); }) }, increase: function() { this.set({ maewe: this.get('maewe') + 1 }); } }) $(document).ready(function() { var test = new Test(); $('#myButton').on('click', function() { test.increase(); console.log(test.get('maewe')); }); }) </script> </body> </html> |
Backbone никак не следит за изменением данных модели, ни по таймеру, ни через Object.observe, ни каким другим способом. Спровоцировать событие при изменении данных можно при помощи метода set, как в примере jsnb
|
Спасибо за ответ. Буду дальше изучать. Вообще вопрос такой - backbone - стоит траты на него времени и усилий или есть фреймворки,которые те же задачи решают проще и умеют еще много чего. Вообще мне нужна библиотека которая позволит создавать классы аналогичные php, чтобы можно было в конструкторе прописать все ДОМ - элементы с которыми буду работать, а из методов класса к ним легко обращаться.
|
Цитата:
|
Часовой пояс GMT +3, время: 11:17. |