如何从一个控制器调用方法到另一个控制器appcelerator
How to call method from a controller to another controller appcelerator
我正在使用 appcelerator-studio 构建一个应用程序。
应用程序使用以下代码以编程方式创建 table:
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");
}
现在我想从 controller.js 调用 changeLanguage 方法,但是如果我尝试执行方法 set_fileds(来自 controller.js),我会出错。
只需对您的代码做一点改动:
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");
};
其余代码保持不变。
假设这是您的 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
我正在使用 appcelerator-studio 构建一个应用程序。
应用程序使用以下代码以编程方式创建 table:
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");
}
现在我想从 controller.js 调用 changeLanguage 方法,但是如果我尝试执行方法 set_fileds(来自 controller.js),我会出错。
只需对您的代码做一点改动:
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");
};
其余代码保持不变。
假设这是您的 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