1

我正在嘗試取文本字段的值,並使用Ti.App.fireEvent(http://docs.appcelerator.com/titanium/latest/#!/api/Titanium.App-method-fireEvent)將它傳遞到一個新窗口(JavaScript文件),以便我最終可以將其插入數據庫當一個按鈕被按下...到目前爲止,我有一個變量,它存儲了名爲usernameValue的文本字段的值。這將被髮送到http參數值。必須有一些簡單的東西,我錯過了。讓我知道是否需要更多的信息來使這個問題更清楚。鈦通過Textfield值到新窗口

TexField其中數據最初來源於:

var username = Titanium.UI.createTextField({ 
    //color : '#ffffff', 
    top : 10, 
    width : 300, 
    height : 45, 
    hintText : 'Username', 
    keyboardType : Titanium.UI.KEYBOARD_DEFAULT, 
    returnKeyType : Titanium.UI.RETURNKEY_DEFAULT, 
    borderStyle : Titanium.UI.INPUT_BORDERSTYLE_ROUNDED, 
    clearButtonMode: Titanium.UI.INPUT_BUTTONMODE_ONFOCUS 
}); 

需要來自login.js傳遞:

//FireEvent parameter passing! 
var usernameValue = username.value; 

Ti.App.addEventListener('sendDataToScreen', function() 
{ 
    Ti.App.fireEvent('app:populateUsername', usernameValue); 
}); 

IM.js檢索:

//FireEvent Paremeter Passing! 
Ti.App.fireEvent('app:populateUsername', usernameValue); 

新窗口(在這種情況下,幫助):

//if logged in, open new window! 
     var IM = Ti.UI.createWindow({ 
      url : 'IM.js', 
      navBarHidden : false, 
      // fullscreen:false 

     }); 
     IM.open(); 

按鈕參數傳遞用於其中:

//posting of IM onclick to database!! 
postBtn.addEventListener('click', function(e) { 

    if (chatBox.value != '') { 

     createReq.open("POST", "http://***.php"); 
     var params = { 

      post : chatBox.value, 
      user : _data.username 
     }; 
     createReq.send(params); 

     //tap to repload and clear 
     var rd = []; 
     tableview.data = rd; 
     setData(); 

    } else { 
     var blankAlert = Titanium.UI.createAlertDialog({ 
      title : 'Posting Error', 
      message : 'Post cannot be empty', 
      buttonNames : ['OK'] 
     }); 
     blankAlert.show(); 
    } 
}); 

回答

0

發送時數據接收數據

Ti.App.addEventListener('app:populateUsername', function(_data) 
{ 
    // all the data passed 
    Ti.API.info(JSON.stringify(_data)); 

    // the value is here 
    Ti.API.info("the name passed as a parameter " + _data.username)); 
}); 
+0

控制檯輸出 「作爲參數傳遞的名字」 時

Ti.App.fireEvent('app:populateUsername', { "username" : usernameValue }); 

不顯示並且在投入使用時,調試器/模擬器說「找不到變量」。有任何想法嗎?請參閱上面的按鈕使用。 – Klinetel

+0

根據調試器的反饋,我不認爲數據實際傳遞到新窗口。 – Klinetel

+0

我上面提供的示例代碼的工作原理,請提供一個簡單的測試用例,哪裏不工作,沒有人真的想重建您的完整項目以找到適合您的解決方案 –