如何从 appcelerator titanium 中的父项中删除视图
How to remove a view from parent in appcelerator titanium
假设我们有这样的事情:
var parent = parentView; // A View
var child = Alloy.createController('ChildView',{});
parent.add(child);
并且在 ChildView.js 控制器中:
function closeView(){
// remove ourself from parent how?
}
你能以某种方式做到这一点吗?从 closeView() 从其父视图中移除子视图?
我想我可以解决它的方法是将 {} 选项中的父视图发送到子视图并在那里保留一个引用 {parent:parentView}。然后在我的 closeView() 中执行 parent.remove()...。但是还有其他方法吗?
如您所述,您希望将对父项的引用传递给子项以使其工作
var child = Alloy.createController('ChildView',{parentView: parent});
然后在子视图中:
function closeView(){
$.args.parentView.remove($.getView());
}
您也可以反过来,让家长照顾它:
在子视图中:
$.trigger('removeMe');
在父控制器中:
child.on('removeMe',function(){
parent.remove(child);
}
使用事件。所有 Alloy 控制器都实现 BackBone.Events
,因此当您创建 child 时,将 close
事件附加到它并让 parent 删除 child。
child 应该只关心它自己。了解它如何与其 parent 交互是在泄露信息,而不是遵循良好的 SOLID 设计。维护本身就是一场噩梦,更不用说发展这种设计的精神开销了。
Parent代码:
var parent = parentView; // A View
var child = Alloy.createController('ChildView',{});
child.on('close', function () {
parent.remove(child.getView());
});
parent.add(child.getView());
Child代码:
function closeView(){
$.trigger('close');
}
假设我们有这样的事情:
var parent = parentView; // A View
var child = Alloy.createController('ChildView',{});
parent.add(child);
并且在 ChildView.js 控制器中:
function closeView(){
// remove ourself from parent how?
}
你能以某种方式做到这一点吗?从 closeView() 从其父视图中移除子视图?
我想我可以解决它的方法是将 {} 选项中的父视图发送到子视图并在那里保留一个引用 {parent:parentView}。然后在我的 closeView() 中执行 parent.remove()...。但是还有其他方法吗?
如您所述,您希望将对父项的引用传递给子项以使其工作
var child = Alloy.createController('ChildView',{parentView: parent});
然后在子视图中:
function closeView(){
$.args.parentView.remove($.getView());
}
您也可以反过来,让家长照顾它:
在子视图中:
$.trigger('removeMe');
在父控制器中:
child.on('removeMe',function(){
parent.remove(child);
}
使用事件。所有 Alloy 控制器都实现 BackBone.Events
,因此当您创建 child 时,将 close
事件附加到它并让 parent 删除 child。
child 应该只关心它自己。了解它如何与其 parent 交互是在泄露信息,而不是遵循良好的 SOLID 设计。维护本身就是一场噩梦,更不用说发展这种设计的精神开销了。
Parent代码:
var parent = parentView; // A View
var child = Alloy.createController('ChildView',{});
child.on('close', function () {
parent.remove(child.getView());
});
parent.add(child.getView());
Child代码:
function closeView(){
$.trigger('close');
}