未找到Cordova WP8 DatePickerPlugin回调

时间:2014-09-30 21:59:22

标签: cordova windows-phone-8 datepicker phonegap-plugins timepicker

我正在尝试将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插件工作正常。

任何建议都非常感谢。

2 个答案:

答案 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上解决了这个问题。

No result handle issue

我只是在[{1}}类的selectDate方法中保存了处理程序,以便在DateTimePicker.cs之前阅读ResultHandler字典。

DispatchCommandResult