在 Alloy Titanium 中,如何关闭小部件的父级 window

In Alloy Titanuim, How to close widget's parent window

我有一个包含后退按钮的小部件,单击该后退按钮时我想关闭具有该小部件的 window(父 window)。 这是我的 widget.xml :

<Alloy>
    <View id="topBar">
        <View id="leftItems">
            <ImageView id="backIcon" onClick="previousPage" />
            <ImageView id="logo" />
        </View>
        <View id="midItems">
            <Label id="pageTitle"></Label>
            <ImageView id="searchIcon" onClick="searchIcon" platform="ios" />
            <SearchBar id="searchBar" platform="ios" />
            <SearchView id="searchView" ns="Ti.UI.Android" platform="android" onBlur="pageTitleVisiability" onFocus="pageTitleVisiability" />
        </View>
        <View id="rightItems">
            <ImageView id="createIcon" onClick="createPost" />
        </View>
    </View>
</Alloy>

并在 widget.js 中:

function previousPage(argument) {
    // closing the window
}

我尝试在小部件中发送带有 window 名称的自定义 属性,如下所示:

Alloy.createController('windowName').close();

但是它说window没有打开

您无法在小部件中创建控制器并尝试关闭它,您正在创建 window 的新实例,而不是引用调用控制器。我会使用消息传递来执行关闭。在 previousPage 函数中,添加“$.trigger('closeParent');”发出关闭 window 的信号。然后在调用 window(引用小部件的地方)中添加类似“$..on('closeParent', );”的内容然后关闭函数中的window。我希望这是有道理的。

设置回调应该可以解决您的问题。

你的 "widget.js" :

var previousPageCallback;

function previousPage() {
    if(previousPageCallback) previousPageCallback();
}

module.exports = {
    previousPageCallback : previousPageCallback
};

你的"previousWindow.xml"

<Window>
    <Widget id="myWidget" src="<whateverYourWidgetNameIs>"/>
</Window>

您的 "previousWindow.js"(您使用小部件的 window)

$.myWidget.previousPageCallback = $.previousWindow.close();

谢谢大家的欢呼