当我点击datebar.xml中的标签时,showPicker()函数被触发但是datepicker视图在datepicker.xml中不可见
警报也显示为“oops”我的错在哪里?应该是一个bug?我试图解决这个问题3天。
iOS上的datepicker.js中的onDone函数也无法正常工作
提前谢谢你。我正在测试平台是iOS,我的SDK是5.1.1 GA
<Alloy autoStyle="true">
<Window>
<View id="ViewDateBar">
<Require type="view" src="datebar" id="DateBar" />
</View>
<Require type="view" src="datepicker" id="DatePicker" />
</Window>
</Alloy>
datebar.xml
<Alloy>
<View id="datebar">
<Label onClick="ShowDatePicker"/>
</View>
</Alloy>
datebar.js
var ViewDatePicker = Alloy.createController("datepicker", {
onDone : function(SelectedDate) {
Alloy.Globals.JsonQsDateCurrent = SelectedDate;
}
});
function ShowDatePicker() {
ViewDatePicker.getView().showDatePicker();
}
datepicker.xml
<Alloy>
<View id="datepicker" visible="false">
<Picker id="picker" />
</View>
</Alloy>
datepicker.js
var moment = require("alloy/moment");
var args = arguments[0] || {};
var onDone = args.onDone;
init();
function init() {
if (OS_IOS) {
$.picker.setType(Titanium.UI.PICKER_TYPE_DATE);
}
}
function showDatePicker() {
if (OS_IOS) {
//> The iOS Picker will be slide up anddown the screen.
$.picker.setValue(Alloy.Globals.DateCurrent.toDate());
$.datepicker.visible = true;
} else if (OS_ANDROID) {
//> The Android picker will be a pop-up dialog.
$.picker.showDatePickerDialog({
value : Alloy.Globals.DateCurrent.toDate(),
callback : function(e) {
if (e.cancel) {
Ti.API.info('User canceled dialog');
} else {
done(e);
}
}
});
}
}
function done(e) {
if (OS_IOS) {
hideDatePicker();
onDone(selectedDate($.picker));
} else if (OS_ANDROID) {
if (!e.cancel) {
onDone(selectedDate(e));
}
}
}
function hideDatePicker() {
$.datepicker.visible = false;
}
function selectedDate(picker) {
return moment(picker.value);
}
$.datepicker.showDatePicker = showDatePicker;
$.datepicker.hideDatePicker = hideDatePicker;
答案 0 :(得分:2)
如果您在JavaScript中定义需求,则可以将引用传递给父级。
window.js:
var dateBar = Alloy.createController('datebar', {parent: $.win});
我不确定你为什么要按照自己的方式划分你的控制器。你可以这样做吗?
<Alloy autoStyle="true">
<Window>
<View id="ViewDateBar">
<Require type="view" src="datebar" id="DateBar" />
</View>
</Window>
</Alloy>
databar.xml:
<Alloy>
<View id="datebar">
<Label onClick="ShowDatePicker"/>
<Require type="view" src="datepicker" id="DatePicker" />
</View>
</Alloy>
最后评论:在XML / TSS / JS控制器集中定义一个datepicker没有多大好处。没有大量的样式,XML / TSS方法会为您提供。为什么不简单地在标签的click事件处理程序中的代码中定义它?