0

我使用appcelerator-studio構建應用程序。如何從控制器調用方法到另一個控制器編輯器

的應用程序創建使用此代碼表:

controller.js

var rowData = []; 

    var header = Alloy.createController('result_row_header',{ 
     examination:Titanium.Locale.getString(lang+"examination"), 
     start_date:Titanium.Locale.getString(lang+"start_date"), 
     end_date:Titanium.Locale.getString(lang+"end_date") 
    }); 
    var viewHeader = header.getView(); 


    //DISEGNO LA TESTATA 
    rowData.push(viewHeader); 

    $.table.setData(rowData); 

function set_fields(lang) { 
    header.changeLanguage(lang); 
} 

result_row_header.js

var args = arguments[0] || {}; 

$.examination.text = args.examination; 

$.start_date.text = args.start_date; 

$.end_date.text = args.end_date; 


function changeLanguage(lang){ 
    $.examination.text=Titanium.Locale.getString(lang+"examination"); 
} 

現在我想打電話給changeLanguage方法從controller.js,但如果我嘗試執行方法set_fi leds(來自controller.js)我有一個錯誤。

回答

1

只是在你的代碼稍加改動:

result_row_header.js

var args = arguments[0] || {}; 

$.examination.text = args.examination; 

$.start_date.text = args.start_date; 

$.end_date.text = args.end_date; 

// this is the code to access function of a controller from any other 
$.changeLanguage = function (lang){ 
    $.examination.text=Titanium.Locale.getString(lang+"examination"); 
}; 

你的代碼的其餘部分保持不變。

0

讓我們說,這是你的view.js文件:

$.yourMethod = function() { 

    return 'first'; 
}; 

$.view.yourMethod = function() { 

    return 'second'; 
}; 

這是您的view.xml用:

<Alloy> 
    <View id="view"> 
     <Label text="test view"/> 
    </View> 
</Alloy> 

你這樣稱呼它:

var view = Alloy.createController("view",{}); 

view.yourMethod(); //will return first 

win.add(view.getView()); 

但是如果你看到了創作方法,你可以這樣稱呼它:

var view = Alloy.createController("view",{}).getView(); 

view.yourMethod(); //will return second 

win.add(view); 

Titanium Alloy Controller Constructor doesn't exposer functions

相關問題