gpt4 book ai didi

钛合金 : Accessing UI from different controllers?

转载 作者:行者123 更新时间:2023-12-04 14:46:41 25 4
gpt4 key购买 nike

我似乎在更新 Titanium Appcelerator Alloy 中的对象时遇到问题,

我基本上希望能够将表格行添加到我当前所在的不同 Controller / View 中的表格中......希望下面能更好地描述这一点:s

篮子.xml

<Alloy>
<Window id="basketWindow" class="container">
<TableView id="basketTable" />
<Button id="addItemButton" onClick="addItem">Add Item</Button>
</Window>
</Alloy>

篮子.js
function addItem()
{
var itemList = Alloy.createController('item_list');

itemList.getView().open();
}

item_list.xml
<Alloy>
<Window id="itemListWindow" class="container">
<TableView id="itemListTable">
<TableViewRow id="item1" className="item" onClick="addItemToBasket">
Test Item
</TableViewRow>
</TableView>
</Window>
</Alloy>

item_list.js
function addItemToBasket()
{
var row = Ti.UI.createTableViewRow({title: 'Test Item'});

// Here i would ideally want to put something like $.basketTable.append(row);
// But nothing happens, im guessing it cant find $.basketTable as its in a different controller?

}

有人知道吗?

谢谢阅读 :)

最佳答案

一个简单、简单的解决方案是在您将项目添加到购物篮时触发应用程序范围的事件:

function addItemToBasket() {
Ti.App.fireEvent("app:itemAddedToBasket", {
title : "Test Item",
otherAttribute : "Value"
});
}

然后在某个地方的篮子 Controller 中监听事件,并添加表格行:
// inside basket.js
Ti.App.addEventListener("app:itemAddedToBasket", function(e) {
// object 'e' has all the row information we need to create the row
var row = Ti.UI.createTableViewRow({
title: e.title,
otherAttribute: e.otherAttribute
});
// Now append it to the table
$.basketTable.append(row);
});

关于钛合金 : Accessing UI from different controllers?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16062363/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com