0

私は最新の Tianium Appcelerator を使用しており、私のプロジェクトは Alloy を使用しています。

私はTableViewIDを持つを持っています:tblResults

私のコントローラーでは、このテーブル ビューに次のような行を入力します。

// Dummy data
var results = [];
results.push({
    title: 'Hello World',
    value: '123456'
});
results.push({
    title: 'Bye World',
    value: '654321'
});

// Build result data
var resultData = [];
for (var i = 0; i < results.length; i++) {
    resultData.push(createResultRow(
        results[i].title,
        results[i].value
    ));
}

// Method to create result row
function createResultRow(myTitle, myValue) {
    var tableRow = Titanium.UI.createTableViewRow({
        height: 160
        id: 'row-'+ myValue
    });
    var tableRowView = Titanium.UI.createView({
        layout: 'horizontal'
    });
    var myButton = Titanium.UI.createButton({
        title: myTitle,
        btnValue: myValue
    });
    myButton.addEventListener('click', function(e) {
        handleButtonClick(e);
    });
    tableRowView.add(myButton);
    tableRow.add(tableRowView);
    return tableRow;
}

// Set table data
$.tblResults.setData(resultData);

// Method to handle button click
function handleButtonClick(e) {
    if (e.source && e.source.btnValue) {
        // how to select row having a id: 'row-'+ e.source.btnValue ???
    }
}

これが行うことは、オブジェクトのダミー配列を生成することです。次に、それを使用して、ビューを持つ行をテーブル ビューに入力します。その中にボタンがあります。

私が達成しようとしているのは、ボタンがクリックされたときに、次のようなIDを持つテーブル行を選択したいということです:

'row-'+ e.source.btnValue

純粋な javascript/jquery DOM スタイルでは、次のようにします。

$('#row-'+ e.source.btnValue)

Titanium Appcelerator でこれを達成するにはどうすればよいですか? jQueryのような要素セレクター機能はありますか?

4

3 に答える 3

3

これは非常に頻繁に要求される機能であり、現在サポートしていませんが、サポートする必要があります。現時点では、id -> ビュー参照のハッシュを保持し、その方法で検索する必要があります。ただし、ここで機能リクエストを開きましたhttps://jira.appcelerator.org/browse/TIMOB-20286

于 2016-01-28T17:43:33.387 に答える
0

行に select メソッドがある場合は、次のようにすることができます。

$.table.addEventListener('click',function(e) {

    if(e.row.select) e.row.select();
    //or
    if(rows[e.index]) rows[e.index].select();
});
于 2016-01-28T17:43:58.323 に答える
0

テーブルとリスト ビューでは、常にテーブル/リストでclickanditemclickイベントを使用します。これらのイベントは、選択された行 ( e.row) とクリックされた実際のビュー( ) の両方を提供しますe.source。また、すべての行のボタンにリスナーを配置するよりも効率的です。

コードは次のようになります。

$.tblResults.addEventListener('click', handleButtonClick); // or bind in XML

// Method to handle button click
function handleButtonClick(e) {

    // user tapped on button
    if (e.source.btnValue) {
        var row = e.row;
    }
}
于 2016-02-01T11:38:31.777 に答える