获取钛合金中点击的TableRow的ID?

时间:2013-08-02 12:39:42

标签: backbone.js data-binding titanium titanium-alloy

我是Titanium和Backbone的新手。我以前曾经使用过JS框架(最熟悉Knockout.js),但是Backbone和它与Alloy一起工作的方式正在逐渐习惯。

我想做一些非常简单的事情。我有一个绑定到TableView的集合。我想要做的就是在点击特定行时获取与之关联的数据。

应该是微不足道的,但所有的文档似乎都假设你已经知道如何使用Alloy!

模型

exports.definition = {
    config: {
        columns: {
            subject: "text",
            convo_id: "integer",
            created: "text",
            modified: "text"
        },
...

查看

<Alloy>
    <Window id="convosView" title="Conversations">
        <ScrollView id="convoScrollList">
            <TableView id="convoList" dataCollection="convos">
                <TableViewRow onClick="rowClick">
                    <View class="convoRow">
                        <Label class="convoTitle" text="{subject}" />
                        <Label class="convoDate" text="{created}" />
                        <View class="rowArrow" />
                    </View>
                </TableViewRow>
            </TableView>
        </ScrollView>
    </Window>
</Alloy>

控制器

var conversations = Alloy.Collections.convos;
conversations.fetch();

function rowClick(e) {
    alert(e.created);
};    

2 个答案:

答案 0 :(得分:1)

看一下我创建的ti fugutive app的示例端口。基本思想是将模型的id保存在表行中,然后单击,获取模型。

$.table.addEventListener('click', function(_e) {
    var detailController = Alloy.createController('FugitiveDetail', {
        parentTab : $.fugitiveTab,
        data : fugitiveCollection.get(_e.rowData.model)
    });
    $.fugitiveTab.open(detailController.getView());
});

表格行的构造方式如下

<Alloy>
    <!-- have to use alloy_id since I did not specify an id in the schema -->
    <TableViewRow id="row" dataId="" model="{alloy_id}">
        <View class="vgroup">
            <Label id="name" text="{name}"/>
            <Label id="address" text="{address}"/>
        </View>
    </TableViewRow>
</Alloy>

答案 1 :(得分:0)

做这样的事情

function rowClick(e) {
    alert(e.rowData);
}; 

您还可以获得如下索引

function rowClick(e) {
        alert(e.index);
    };

由于