Titanium:如何在Alloy中加载外部自定义AlertDialog?

时间:2014-12-19 01:21:16

标签: titanium titanium-alloy

我在Alloy中编写了所有项目的代码,所以这里没有经典的Titanium。 我想在索引中加载外部自定义AlertDialog(位于views / popup.xml中)。因此,我需要通过单击“确定”按钮显示警报并将其销毁(对于ie。)。 “帮助”按钮应该执行其他操作。

我的popup.xml文件:

<Alloy>
    <AlertDialog id="popup" title="Error popup"
        message="There is an error" cancel="1">
        <ButtonNames>
            <ButtonName>OK</ButtonName>
            <ButtonName>Help</ButtonName>
        </ButtonNames>
    </AlertDialog>
</Alloy>

我的index.js文件:

function openPopup(e) {
    var page = Alloy.createController('views/popup').getView();
    page.show();
};
openPopup();

但这给了我一个错误:

  • [DEBUG] [iphone,8.1,192.168.0.1]原生 模块:合金/控制器/视图/弹出
  • [错误] [iphone,8.1,192.168.0.1]无法找到模块: 合金/控制器/视图/弹出
  • [错误] [iphone,8.1,192.168.0.1] TypeError:&#39; undefined&#39;不是一个 构造函数(评估&#39; new(__ p.require(&#34; alloy / controllers /&#34; + 名))(参数)&#39)

我没有popup.js,我也不需要index.js中的任何文件。所以我的问题是:如何动态加载控制器?如何使用addEventListener删除(或销毁)&#34;单击&#34;行动?谢谢。

1 个答案:

答案 0 :(得分:0)

同意乌龟。当您创建控制器时,它隐式地知道您在引用app / views目录中的视图。

您应该通过不创建局部变量(用于垃圾收集目的)来略微改进您的代码。所以而不是:

var page = Alloy.createController('views/popup').getView();
page.show();

你应该这样做:

Alloy.createController('views/popup').getView().open();

您可以在splendid article by Fokke Zandbergen中找到有关此内容的更多信息。

/约翰