1

내 코도 바 앱의 WP8 버전에 Lee Crossley's WP8 plugin-datetime-picker을 사용하려고합니다.Cordova WP8 DatePickerPlugin 콜백을 찾을 수 없습니다.

나는 자신의 datepicker 플러그인으로 실행중인 iOS, Android 및 Fireos 버전의 앱을 이미 보유하고 있지만이 버전이 작동하려면 어려움을 겪고 있습니다. 'doDatePick에서'기록됩니다

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

날짜 선택기가 표시되고 :

나는 피커과 같이 인스턴스화 :

<input onclick="doDatePick(this)" readonly name="my-account-dob" id="my-account-dob" value="" class="required" /> 

그리고 다음과 같이 입력을받을하려고합니다. 그러나 datepicker에서 새 날짜를 확인하면 그 밖의 항목이 기록되지 않고 Visual Studio에서 'id : DateTimePicker에 대한 콜백을 찾을 수 없음'을 출력 창에보고합니다. 말할 필요도없이 입력 상자가 선택한 날짜로 업데이트되지 않습니다.

나는 Cordova 프로젝트가 올바르게 설정되었다고 확신한다. 나는 필요한 모든 플러그인을 설치하고 Visual Studio를 통해 코드를 추가하기 전에 빌드를 수행했습니다. Chris Brody의 SqlLite Plugin과 같은 다른 타사 플러그인도 정상적으로 작동합니다.

큰 호응을 얻었습니다.

+0

이 발생했습니다 코르도바에 변화가왔다 나는 해결책 일하고 있어요 및 가능한 핵심 문제보고 : https://issues.apache.org/jira/browse/CB-7693를 –

+0

내 케이스에 Datepicker가 표시되지 않습니다. 로그에서 이것은 내가 발견 한 것입니다 - " 'datetimepicker'는 정의되지 않은 파일입니다 :"왜이 오류가 기록되고 datepicker가 표시되지 않는지 알 수 있습니까? 어떤 도움이라도 대단히 감사하겠습니다. –

답변

2

나는 the core issue을 코르도바 팀에보고했다. 나는 그것이 해킹 알고

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

, 그러나 당신이 가야 할 것이다 : 임시 해결 방법으로

platforms\wp8\cordovalib\Commands\BaseCommand.cs DetatchHandlers() 방법으로 대체 할 수있다. 또는 이전 버전의 Cordova를 사용할 수도 있습니다.

+1

해킹 여부에 관계없이 완벽하게 작동합니다. 빠른 해결책을 가져 주셔서 대단히 감사합니다! – DaveSav

2

나는 github에서이 문제를 해결했습니다.

No result handle issue

단순히 내가 DispatchCommandResult 전에 ResultHandler 사전에 그것을 다시 읽어 DateTimePicker.cs 클래스의 selectDate 방법 핸들러를 저장했습니다.

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

관련 문제