【发布时间】:2016-03-25 01:37:56
【问题描述】:
我有一个自定义的 TableViewRow,其标题和开关如下所示:
rowFilter.xml
<TableViewRow id="rowFilter">
<View id="vwItemHeader">
<Label id="lblItemHeader"></Label>
</View>
<View id="vwFilterStatus">
<Switch id="swtFilterStatus" onChange="swtFilterStatusChange"></Switch>
</View>
</TableViewRow>
rowFilter.js
var args = arguments[0] || {};
var swtFilterStatusChange_callback;
initialize();
function initialize() {
// Initialize filter row UI
$.lblItemHeader.text = args.title;
$.swtFilterStatus.value = args.value;
// Callback
swtFilterStatusChange_callback = args.callback;
};
在我调用 Browse 的视图中,我以编程方式添加这些自定义行,如下所示:
var args = { title: item.title, value: item.value, callback: swtFilterStatusChanged, };
var newRow = Alloy.createController('rowFilter', args).getView('rowFilter');
这按预期工作。但是现在我想添加一个选中/取消选中所有行。如何以编程方式在我的自定义行中切换开关?
我尝试在 rowFilter.js 中创建以下函数(以及用于关闭的类似函数):
exports.toggleOn = function() {
if ($.swtFilterStatus.value == false) {
$.swtFilterStatus.value = true;
swtFilterStatusChange();
}
};
我也试过这个:
$.toggleOn = function() {
}
::EDIT:: 以下是我处理选中/取消选中所有开关的方式。
function allSwitch_Change(value) {
$.tblFilters.data[0].rows.forEach(function(row) {
if (value) {
row.toggleOn();
}
else {
row.toggleOf();
}
}
}
然后使用以下内容更改执行 Alloy.createController 的 Browse.js 行:
var newRow = require('rowFilter');
newRow.initialize(args);
但我只是在 require 语句中遇到一个异常,说“找不到模块:rowFilter for architecture: x86_64”。
我做错了什么以及如何实现检查/取消选中所有行?
【问题讨论】:
标签: javascript appcelerator appcelerator-titanium