0

Ich bin eine Anwendung mit appcelerator-Studio erstellen.So rufen Sie Methode von einem Controller zu einem anderen Controller appcelerator

Die Anwendung mit diesem Code programmatisch eine Tabelle erstellen:

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"); 
} 

Jetzt will ich die change Methode aufrufen von controller.js, aber wenn ich versuche, die Methode set_fi auszuführen leds (von controller.js) Ich habe einen Fehler.

Antwort

1

Nur eine kleine Änderung im Code:

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"); 
}; 

Rest des Codes bleibt gleich.

0

Lets sagt, dass dies Ihre view.js Datei ist:

$.yourMethod = function() { 

    return 'first'; 
}; 

$.view.yourMethod = function() { 

    return 'second'; 
}; 

Und das ist Ihr view.xml:

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

Sie es so nennen:

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

view.yourMethod(); //will return first 

win.add(view.getView()); 

Aber wenn Sie die Ansicht bei der Erstellungsmethode erhalten, nennen Sie es so:

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

view.yourMethod(); //will return second 

win.add(view); 

Titanium Alloy Controller Constructor doesn't exposer functions

Verwandte Themen