我想知道如何使用Javascript OOP方法处理视图和子视图。这是基本任务:我想创建一个水平的,可滑动的窗格列表。滑动元素本身将是一个视图,在其中我将有许多子视图 - 每个窗格一个。我目前的方法看起来像这样:
function Swipe(el){
this.el = el;
var els = el.querySelectorAll('li');
this.subviews = els.map(function(li){
return new Pane(li);
}, this);
}
Swipe.prototype.goto = function(num){
// alter this.el to show the current pane, based
// on index.
}
function Pane(el){
this.el = el;
}
Pane.prototype.bind = function(){
// bind click events
}
这种设计模式对我来说效果不错,但从子视图访问父视图的最佳方式是什么?在构建子视图时,我已经过了this
,就像这样:
this.subviews = els.map(function(li){
return new Pane(li, this);
}, this);
function Pane(el, parent){
this.el = el;
this.parent = parent;
}
这允许我从父视图调用函数 - 例如,我可以使用goto
函数来响应单击的子视图按钮。但我猜这不是最佳选择。
所以我的问题:处理视图和子视图的最佳方式是什么,特别是子视图从父视图调用函数的能力?