View Appcelerator-如果在子视图上发生问题,则通知父视图
如何在父视图上获取有关子视图事件的信息 例如: 我将和参数传递给子对象(Alloy.createController('myChildView',{info:test}).getView()。然后我使用它并将全局变量从false设置为true(Alloy.Globals.childPrecessed=true)。在那之后,我可以在这个视图上花费任何时间,但是当我点击一个触发隐藏事件的按钮时,我应该处理来自父视图的信息 我的第一个想法是启动az appwide事件(myChildHide),并在父视图中侦听它。如果我抓到了,我会处理这些信息,然后摧毁听者 这是最好的方法吗?我不确定 有没有更好的解决办法View Appcelerator-如果在子视图上发生问题,则通知父视图,view,parameters,parameter-passing,parent-child,appcelerator,View,Parameters,Parameter Passing,Parent Child,Appcelerator,如何在父视图上获取有关子视图事件的信息 例如: 我将和参数传递给子对象(Alloy.createController('myChildView',{info:test}).getView()。然后我使用它并将全局变量从false设置为true(Alloy.Globals.childPrecessed=true)。在那之后,我可以在这个视图上花费任何时间,但是当我点击一个触发隐藏事件的按钮时,我应该处理来自父视图的信息 我的第一个想法是启动az appwide事件(myChildHide),并在父
谢谢 我是活动听众的粉丝,所以我认为你的方法很好 我通常做的是在需要事件侦听器生效之前启动它,即在打开子窗口的方法中。但首先,我使用主干事件进行简单的事件触发。看见因此,假设您已经设置了一个“调度器”,那么我会这样做:
function openChild(){
dispatcher.on("child-calling", doChildsWork);
// ... open child view
}
function doChildsWork(){
// ... Tell parent to do some work
dispatcher.trigger("child-calling",{test:true});
// ... continue whatever is going on in child
}
然后在doChildsWork
中,一旦调用,我将禁用事件处理程序:
function doChildsWork(args){
dispatcher.off("child-calling");
// ... do work initiated by child view using args...
}
最后,在子视图中(假设您已经设置了“dispatcher”),您将执行以下操作:
function openChild(){
dispatcher.on("child-calling", doChildsWork);
// ... open child view
}
function doChildsWork(){
// ... Tell parent to do some work
dispatcher.trigger("child-calling",{test:true});
// ... continue whatever is going on in child
}
我经常使用这种方法,而且效果很好:)
/约翰我是活动听众的粉丝,所以我认为你的方法很好 我通常做的是在需要事件侦听器生效之前启动它,即在打开子窗口的方法中。但首先,我使用主干事件进行简单的事件触发。看见因此,假设您已经设置了一个“调度器”,那么我会这样做:
function openChild(){
dispatcher.on("child-calling", doChildsWork);
// ... open child view
}
function doChildsWork(){
// ... Tell parent to do some work
dispatcher.trigger("child-calling",{test:true});
// ... continue whatever is going on in child
}
然后在doChildsWork
中,一旦调用,我将禁用事件处理程序:
function doChildsWork(args){
dispatcher.off("child-calling");
// ... do work initiated by child view using args...
}
最后,在子视图中(假设您已经设置了“dispatcher”),您将执行以下操作:
function openChild(){
dispatcher.on("child-calling", doChildsWork);
// ... open child view
}
function doChildsWork(){
// ... Tell parent to do some work
dispatcher.trigger("child-calling",{test:true});
// ... continue whatever is going on in child
}
我经常使用这种方法,而且效果很好:)
/约翰投票支持福克的文章。我会使用callback或controller.on/controller.trigger。非常详细的答案,很棒的文章,谢谢你,John!:)投票支持福克的文章。我会使用callback或controller.on/controller.trigger。非常详细的答案,很棒的文章,谢谢你,John!:)