【问题标题】:Titanium Alloy: Accessing UI from different controllers?钛合金:从不同的控制器访问 UI?
【发布时间】:2013-04-17 14:10:30
【问题描述】:

我似乎无法在 Titanium Appcelerator Alloy 中更新对象,

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

basket.xml

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

basket.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?

}

有人知道吗?

感谢阅读:)

【问题讨论】:

    标签: titanium appcelerator


    【解决方案1】:

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

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

    然后在某处的篮子控制器中监听事件,并添加表格行:

    // 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);
    });
    

    【讨论】:

    • 我喜欢这个答案,但我也很好奇这样做的“模型-视图-控制器”方式。假设“篮子”是模型或集合,我想与服务器自动同步。应用级事件仍然是一个好的解决方案吗?
    • 应用级事件可能会触发“模型”更改的全局同步事件,这会向下渗透通知每个控制器模型已更改,然后更新其视图。因此,一些相同的概念也适用。尽管“应用级别事件”可能会被购物篮集合上的 Backbone 事件所取代。
    • 嗨 Josiah,你能在这里看看我的问题吗stackoverflow.com/questions/30951469/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多