如何在父视图中获取有关子视图事件的信息?
例如:
我传递给孩子的参数(Alloy.createController('myChildView',{info:test})。getView())。然后我使用它并将一个全局变量从false设置为true(Alloy.Globals.childPrecessed = true)。之后,我可以在这个视图上花费任何时间,但是当我点击一个触发隐藏事件的按钮时,我应该从父视图处理信息。
我的第一个想法是我激活az appwide事件(myChildHide),并在父视图中监听它。如果我抓住它,那么我处理信息,并销毁听众...
这是最好的方法吗?我不确定......
有没有更好的解决方案?
谢谢!
答案 0 :(得分:2)
我是活动听众的粉丝,所以我觉得你的方法很好。
我通常做的是在我需要它之前启动事件监听器,即在打开子窗口的方法中。但首先我使用骨干事件进行简单的事件触发。见Fokke Zandbergen's article for further info。所以假设你已经设置了一个“调度员”,那么我会做这样的事情:
function openChild(){
dispatcher.on("child-calling", doChildsWork);
// ... open child view
}
然后在doChildsWork
中,我会在调用后禁用事件处理程序:
function doChildsWork(args){
dispatcher.off("child-calling");
// ... do work initiated by child view using args...
}
最后在子视图中(假设您已经设置了“调度程序”),您可以执行以下操作:
function doChildsWork(){
// ... Tell parent to do some work
dispatcher.trigger("child-calling",{test:true});
// ... continue whatever is going on in child
}
我经常使用这种方法 - 效果很好: - )
/约翰