0

目的 c では、nextClassname.recievedVariable = passedVariable; によって、2 つのクラス間で非常に簡単にデータを渡すことができます。

チタンも試したけどダメだった

私は次のように試しました

セカンドクラスで

$.table.addEventListener('click', function(e) {
                         var selected = e.row;

                         alert(e.row.title);

                         var TodayStatus = Titanium.UI.createWindow({ url:'TodayStatus.js' });

                         TodayStatus.seletedProj = e.row.title;
                         // var TodayStatus = new Alloy.createController("TodayStatus");
                            TodayStatus.getView().open();


                         });

別のクラスから文字列を受け取る必要がある最初の Calss で

var win = Ti.UI.currentWindow;
Ti.API.info(win.seletedProj);

しかし、次のようなエラーが発生します

  message = "'undefined' is not an object (evaluating 'win.seletedProj')";
[ERROR] :      name = TypeError;
4

3 に答える 3

1

このようにパラメータを渡すことでデータを渡すことができます。

x.addEVentListener('click', function(e){
    var controller = require('controllerPath').createWindow(e.value);
controller.open();
})

そしてcontroller.jsで

exports.createWindow = function(value)
{
   //whatever You like to do with UI
}
于 2013-08-13T07:24:41.837 に答える
0

Alloyでそれを行う方法については、こちらのリンクを参照してください。

https://github.com/aaronksaunders/alloy_fugitive/blob/master/app/controllers/Fugitives.js#L29

ただし、基本的な考え方は、新しいコントローラーを作成するときにオブジェクトをパラメーターとして渡すことです。

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

私が提供したリンクには、合金を使用した完全なソリューションがあります

于 2013-08-12T15:40:23.117 に答える
0

「url」パラメーターを使用して新しいウィンドウを作成すると、そのコードが自動的に独自のサブコンテキストに配置され、複雑なオブジェクトを渡すことができなくなります。次を参照してください。

http://docs.appcelerator.com/titanium/3.0/#!/api/Titanium.UI.Window

私はもうこのようにする傾向はありません。

私が行う方法は、todayStatus ウィンドウを一般的な js クラスとして作成することです。

// todayStatus.js

var win = Ti.UI.createWindow({ top:0, left: 0, right: 0, bottom:0, etc... });

//any extra visual building code can go here

win.open();


exports.seletedProj = function(rowTtl){
    //this function is available outside the class
}

次に、次のようにメイン クラスから参照できます。

// main.js

var TodayStatus = require('todayStatus');

TodayStatus.seletedProj(e.row.title);

etc...

それが役立つことを願っています

于 2013-08-12T14:39:31.323 に答える