我正在尝试将Lee Crossley's WP8 plugin-datetime-picker用于我的Cordova应用程序的WP8风格。
我已经拥有使用自己的datepicker插件运行的iOS,Android和Fireos版本的应用程序,但我很难让这个版本工作。
我像这样实例化选择器:
<input onclick="doDatePick(this)" readonly name="my-account-dob" id="my-account-dob" value="" class="required" />
并尝试接收这样的输入:
function doDatePick(elem) {
console.log('at doDatePick');
var onDateSelected = function (date) {
console.log('inside function');
alert(new Date(parseInt(date, 10)));
console.log(new Date(parseInt(date, 10)));
$(elem).val(DPgetNamedMonthDate(new Date(parseInt(date, 10))));
}
datetimepicker.selectDate(onDateSelected);
}
显示日期选择器,并记录“at doDatePick”。但是当我在datepicker中确认新日期时,没有记录任何其他内容,并且Visual Studio在其输出窗口中报告“无法找到id:DateTimePicker的回调”。不用说,输入框不会更新我选择的日期。
我确信Cordova项目设置正确;我安装了我需要的所有插件,并在通过Visual Studio添加任何代码之前进行了构建。其他第三方插件,如Chris Brody的SqlLite插件工作正常。
任何建议都非常感谢。
答案 0 :(得分:2)
我向Cordova团队报告了the core issue。
作为临时解决方法,platforms\wp8\cordovalib\Commands\BaseCommand.cs
DetatchHandlers()
方法可以替换为:
public void DetachHandlers()
{
this.OnCommandResult = null;
this.OnCustomScript = null;
foreach (string callbackId in new List<string>(ResultHandlers.Keys))
{
if (!callbackId.ToLower().Contains("datetimepicker"))
{
RemoveResultHandler(callbackId);
}
}
}
我知道这是一个黑客攻击,但它会帮助你。您也可以使用较旧版本的Cordova。
答案 1 :(得分:2)
我已经在github上解决了这个问题。
我只是在[{1}}类的selectDate
方法中保存了处理程序,以便在DateTimePicker.cs
之前阅读ResultHandler
字典。
DispatchCommandResult