我有使用StackView的应用程序并将大量动态创建的对象推送到此StackView中,当从StackView弹出时我需要一些方法来销毁这个对象。如果我使用Controls 1 Stackview,我可以使用destroyOnPop属性推送对象(就像它显示在this question中):
tablesStack.push({item: view, destroyOnPop: true})
但它不适用于Controls 2 StackView。这个问题的正确解决方案是什么?
我只知道一种方法:当我弹出它时,延迟调用object.destroy(),但这种方式看起来像kludge。如果它很重要,我可以将任何代码添加到动态生成的对象
答案 0 :(得分:3)
控件2 StackView
简化了所有权语义。 StackView
获取其动态实例化的任何项目的所有权。如果您已创建实例,那么您可以控制实例。换句话说,如果您希望销毁StackView
,请推送Component
或网址,然后让StackView
创建实例。
如果您需要访问创建的实例,您只需处理返回值:
var view = stackView.push(component, {"foo": 1, "bar": 2})
view.doSomething()