2016-07-05 2 views
0

У меня есть директива, которая контролирует фокус ввода и заставляет показывать клавиатуру.ngCordova plugin.keyboard undefined

directives.showKeyboard = function($cordovaKeyboard) { 
    var linkFn = function(scope, element, attrs) { 
     element.bind("focus click", 
      function(e) { 
       e.preventDefault(); 
       if(scope.$eval(attrs.showKeyboard)) { 
        $cordovaKeyboard.hideAccessoryBar(true); 
       } 
      } 
     ); 
    }; 

    var keyboardDirective = { 
     restrict : 'A', 
     link: linkFn 
    }; 

    return keyboardDirective; 

} 

HTML-:

<input id="search_post" type="search" placeholder="Search post" my-enter="search_posts(true)" ng-model="searchText" 
        style="width:100%;height:26px" show-keyboard="true" required> 

Когда вход получить фокус, то возникает следующее сообщение об ошибке:

ng-cordova.js:4711 Uncaught TypeError: Cannot read property 'Keyboard' of undefined

Я проверил, что успешно установлен плагин и ngCordova Lib.

Что случилось?

ответ

0

Попробуйте обернуть свой код $ionicPlatform.ready события.

directives.showKeyboard = function($cordovaKeyboard, $ionicPlatform) { 
    $ionicPlatform.ready(function() { 
    var linkFn = function(scope, element, attrs) { 
     element.bind("focus click", 
     function(e) { 
      e.preventDefault(); 
      if (scope.$eval(attrs.showKeyboard)) { 
      $cordovaKeyboard.hideAccessoryBar(true); 
      } 
     } 
    ); 
    }; 

    var keyboardDirective = { 
     restrict: 'A', 
     link: linkFn 
    }; 
    return keyboardDirective; 
    }); 
} 
+0

Теперь возникает следующая ошибка: Ошибка типа: Не удается прочитать свойство «компилировать» неопределенной – domoindal

+0

ли вы решить этот вопрос еще? –

+0

У меня такая же проблема. Всегда имеют ту же ошибку. – domoindal

0

Вы решили проблему? Если нет, то вот решение:

angular.module('module_name',[]).directive('your_directive_name', ['$cordovaKeyboard', function(){ 
     restrict : 'A', 
     link: function(scope, element, attrs) { 
     element.bind("focus click", 
      function(e) { 
       e.preventDefault(); 
       if(scope.$eval(attrs.showKeyboard)) { 
        $cordovaKeyboard.hideAccessoryBar(true); 
       } 
      } 
     ); 
    }; 
}] 
Смежные вопросы