2

我有一个应用程序,它使用 StackView 并将许多动态创建的对象推送到这个 StackView 中,当它们从 StackView 中弹出时,我需要一些方法来销毁这个对象。如果我使用 Controls 1 Stackview,我可以推送具有 destroyOnPop 属性的对象(就像在这个问题中显示的那样):

tablesStack.push({item: view, destroyOnPop: true})

但它不适用于 Controls 2 StackView。这个问题的正确解决方案是什么?

我只知道一种方法:当我弹出它时延迟调用 object.destroy(),但这种方法看起来像 kludge。如果它很重要,我可以将任何代码添加到动态生成的对象中

4

1 回答 1

3

Controls 2StackView简化了所有权语义。StackView获得它动态实例化的任何项目的所有权。如果您已经创建了实例,那么您就可以控制该实例。换句话说,如果你想StackView销毁,推送Components 或 URL 并让StackView创建实例。

如果您需要访问创建的实例,您可以简单地处理返回值:

var view = stackView.push(component, {"foo": 1, "bar": 2})
view.doSomething()
于 2016-08-21T11:42:27.253 回答