2015-02-05 2 views
0

Я получаю ошибку ниже, это мое приложение AngularJs.undefined не является функцией ошибки в AngularJS

TypeError: undefined is not a function 
    at Scope.$rootScope.shareImageNow (index.controller.js:150) 

Я не уверен, в чем причина после некоторых исследований Google.

controller.js Файл

app.controller('ViewCtrl', function($rootScope, $state, $scope, $ionicPlatform, $ionicPopup, $ionicLoading, $ionicSlideBoxDelegate, $ionicScrollDelegate, $timeout, Service) { 

    var appUrl = "https://play.google.com"; 

    $rootScope.shareNow = function() { 

     var message = "xx"; 
     var subject = "yy"; 

     Service.share(message, subject, null, appUrl); 

    } 

    $rootScope.shareImageNow = function() { 

     var imageIndex = 0; 

     var imgUrl = $rootScope.itemData[imageIndex]['url']; 

     var message = "xx"; 
     var subject = "yy"; 

     Service.share(message, subject, imgUrl, appUrl); 

    } 
}); 

service.js Файл:

module.service('Service', function($rootScope, $ionicPlatform, $cordovaSocialSharing) { 

    $rootScope.share = function(message,subject,file,link) { 

     $ionicPlatform.ready(function() { 
      $cordovaSocialSharing 
       .share(message, subject,file,link); 
     }, false); 

    } 
} 

Ошибка отображается в строке ниже в controller.js файле.

Service.share(message, subject, null, appUrl); 
+0

Какой является линия 150 в index.controller.js –

+0

К сожалению @DavidGrinberg. Я сейчас обновил этот вопрос. Отображаемая ошибка находится в Service.share (сообщение, тема, null, appUrl); – Purus

ответ

3

Вы регистрируя Service услугу, но не определяет каких-либо методов на нем.

Вы также много чего делаете с $rootScope, и я задал вопрос, почему вы это делаете.

В любом случае, вы можете определить обслуживание следующим образом, и вы не получите сообщение об ошибке при Service.share()

module.service('Service', function($ionicPlatform, $cordovaSocialSharing) { 

    var share = function(message,subject,file,link) { 
     $ionicPlatform.ready(function() { 
      $cordovaSocialSharing 
       .share(message, subject,file,link); 
     }, false); 

    }; 

    return { 
     share: share 
    } 
} 
+0

Является ли мой способ использования сервиса совершенно неправильным? У меня есть другие методы в сервисе, и все они работают нормально. – Purus

+0

Короче, да, то, как вы пользуетесь сервисом, совершенно неверно. '$ rootScope' должен почти * никогда не использоваться * - для чего нужны сервисы. – Tom

+0

Спасибо за разъяснение. Это мое первое приложение, использующее Angular. Итак, если у меня есть больше функций в сервисе, я должен вернуть их всех в конце, как показано. это так? Можете ли вы указать мне учебник, где это объясняется? а не официальный плз. – Purus

Смежные вопросы