1

我想使用Lee Crossley's WP8 plugin-datetime-picker爲我的科爾多瓦應用程序的WP8味道。科爾多瓦WP8 DatePickerPlugin回調未找到

我已經有iOS,Android和FireOS版本的應用程序與他們自己的datepicker插件運行,但我努力讓這個版本工作。

我實例化選擇器,像這樣:

<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); 
} 

的日期選擇器,和 '在doDatePick' 被記錄。但是,當我確認datepicker中的新日期時,沒有其他記錄,並且Visual Studio報告「無法找到id:DateTimePicker的回調」在其輸出窗口中。不用說,輸入框不會隨我選擇的日期更新。

我確定Cordova項目設置正確;我安裝了我需要的所有插件,並在通過Visual Studio添加任何代碼之前進行了構建。其他第三方插件,例如Chris Brody的SqlLite插件工作正常。

任何建議非常感謝。

+0

一直有變化科爾多瓦,才造成了這一點,我在努力尋找解決方案,並報道了可能的核心問題是:https://issues.apache.org/jira/browse/CB-7693 – 2014-10-02 09:27:53

+0

Datepicker沒有顯示在我的情況。在日誌中,這是我發現 - 「'datetimepicker'是未定義的文件:」任何想法爲什麼這個錯誤被記錄,我的日期選擇器沒有顯示?任何幫助將不勝感激。 – 2015-04-09 11:05:03

回答

2

我已向科爾多瓦團隊報告the core issue

作爲臨時解決辦法,該platforms\wp8\cordovalib\Commands\BaseCommand.csDetatchHandlers()方法可以替換爲:

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

黑客或沒有,它完美的作品。非常感謝您的快速解決方案! – DaveSav 2014-10-02 20:38:37

2

我已經在github上解決了這個問題。

No result handle issue

只要我還保存在DateTimePicker.csselectDate方法處理程序DispatchCommandResult前閱讀回ResultHandler字典。

public event EventHandler<PluginResult> mySavedHandler; 
.... 
public void selectDate(string options) 
{ 
    .... 

    if (ResultHandlers.ContainsKey(CurrentCommandCallbackId)) 
    { 
     mySavedHandler = ResultHandlers[CurrentCommandCallbackId]; 
    } 
    .... 
} 

private void dateTimePickerTask_Completed(object sender, DateTimePickerTask.DateTimeResult e) 
{ 
    ...... 
    try 
    { 
     if (!ResultHandlers.ContainsKey(CurrentCommandCallbackId)) 
     { 
      ResultHandlers.Add(CurrentCommandCallbackId, mySavedHandler); 
     } 
     ..... 
     DispatchCommandResult(new PluginResult(PluginResult.Status.OK, result + "")); 
    } 
} 
+0

這看起來很棒! – systempuntoout 2014-11-21 20:01:58

相關問題