我对FLUX很新,所以我开始在他们的网站上使用TODO示例: https://facebook.github.io/flux/docs/todo-list.html
在Listening to Changes with a Controller-View 部分:
TodoApp中存在事件绑定:
this._onChange
和 _onChange: function() {
this.setState(getTodoState());
}
就像:
addChangeListener: function(callback) {
this.on(CHANGE_EVENT, callback);
}
来自TodoStore的addChangeListener就像:
_onChange()
让我困惑的是:
似乎商店只是注册了if ($('.sticky-sidebar').length) {
var sideBarTop = $('.sticky-sidebar').offset().top;
stickySidebar = function() {
if ($(window).width() >= 768) {
$('.sticky-sidebar').css({
width: 0.25*($('#container').width())
});
if ($(window).scrollTop() >= (sideBarTop - $('#header').outerHeight(true))) {
$('.sticky-sidebar').css({
position: 'fixed',
top: $('#header').outerHeight(true),
left : $("#content").offset().left
});
} else {
$('.sticky-sidebar').css({
position: '',
top: ''
});
}
} else {
$('.sticky-sidebar').css({
width: $('#container').width()
});
}
};
stickySidebar();
$(window).scroll(stickySidebar);
$(window).on('resize', stickySidebar);
}
,但如果页面上有多个TodoApps,TodoStore如何知道需要调用哪个_onChange()。 < / p>
答案 0 :(得分:1)
TodoStore只是发出事件,并且正在监听该商店的每个组件都会更新。因此,如果页面上有两个TodoApp
,则两者都将更新。