Titanium中的集合单例或实例有什么区别?

时间:2014-03-03 05:16:02

标签: titanium titanium-alloy

在Alloy文档中,它提到您可以拥有集合的单例或实例。您可以使用实例标记定义这种或那种方式:

<Alloy>
    <Collection id="localLibrary" src="book" instance="true"/>
    <Window>
        <TableView id="table" />
    </Window>
</Alloy>

我理解单例与实例背后的一般思路......但我不明白以某种方式将它暴露给控制器的直接优势/应用。

具体来说,这个控制器代码有什么区别:

var library = Alloy.Collections.book;
library.fetch();

和这个控制器代码:

var library = $.localLibrary;
library.fetch();

它是说&#34;抓住所有&#34;而不是&#34;抓住这一个?&#34;

任何澄清都会很棒,tia。

1 个答案:

答案 0 :(得分:4)

不同之处在于Alloy.Collections.instance("book")将创建一个全局单例实例(或返回一个现有的...),这意味着您将能够使用Alloy.Collections.book在所有控制器中访问它。您可以使用Models执行完全相同的操作。

你为什么要这样做?我认为如果您在子窗口中的某个位置可以访问和操作已在第一个窗口中的TableView中加载的数据,这非常有用...

全球无障碍单身人士:

var library = Alloy.Collections.book; // <Collection src="book"/>
    library.fetch();

本地实例:

var library = $.localLibrary; // <Collection id="localLibrary" src="book" instance="true"/>
    library.fetch();