Вопрос по 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, время: 09:07. |