2015-05-07 2 views
3

У меня есть этот ui-router, и он отлично работает, перенаправляет меня на страницу bubblesettings.ui-router views не может найти метод в контроллере

.state('bubblesettings', { 
     url: '/bubble/:bubbleId/settings', 

     data: { 
      authorizedRoles: [USER_ROLES.editor] 
     }, 
     views: { 
      'navigation': { 
       templateUrl: "/js/shared/partials/navigation.html" 
      }, 
      'main': { 
       templateUrl: "/js/shared/partials/bubbles/bubble-settings.html" 

      } 
     } 
    }) 

В этом контроллере я хочу позвонить в службу, чтобы получить пользователей пузыря.

(function() { 
    'use strict'; 

    angular 
     .module('raqtApp') 
     .controller('BubblesSettingsController', BubblesSettingsController); 

    BubblesSettingsController.$inject = ['$scope', '$rootScope', '$stateParams', 'BubblesService', '$state']; 

    function BubblesSettingsController($scope, BubblesService, $rootScope, $stateParams, $state) { 

     $scope.bubbleId = $state.params.bubbleId; 

     $scope.getMembersInBubble = function (bubbleId) { 
      BubblesService.getBubbleUsers(bubbleId) 
       .then(function (data) { 
        $scope.bubbleUsers = data; 
        console.log('Sucesss'); 
       }, 
       function (data) { 
        console.log('Fail..'); 
       }) 

     }; 
    } 
})(); 

Когда я называю свою функцию getMembersInBubble я получаю

TypeError: BubblesService.getBubbleUsers is not a function 
    at Scope.BubblesSettingsController.$scope.getMembersInBubble (http://localhost:3604/js/bubbles/settings/bubble-settings-controller.js:20:28) 
    at fn (eval at <anonymous> (https://code.angularjs.org/1.4.0-rc.1/angular.js:12931:15), <anonymous>:2:350) 
    at ngEventDirectives.(anonymous function).compile.element.on.callback (https://code.angularjs.org/1.4.0-rc.1/angular.js:22919:17) 
    at Scope.$get.Scope.$eval (https://code.angularjs.org/1.4.0-rc.1/angular.js:15574:28) 
    at Scope.$get.Scope.$apply (https://code.angularjs.org/1.4.0-rc.1/angular.js:15673:23) 
    at HTMLButtonElement.<anonymous> (https://code.angularjs.org/1.4.0-rc.1/angular.js:22924:23) 
    at HTMLButtonElement.jQuery.event.dispatch (http://localhost:3604/js/lib/jquery/jquery.js:4435:9) 
    at HTMLButtonElement.jQuery.event.add.elemData.handle (http://localhost:3604/js/lib/jquery/jquery.js:4121:28) 

Это моя служба

this.getBubbleUsers = function (bubbleId) { 

    var deferred = $q.defer(); 
    $http(
     { 
      method: 'get', 
      url: baseUrl + "/api/bubble/" + bubbleId + "/users", 
      headers: { "Authorization":  RaqtGlobal.getAuthToken().Authorization } 
     }).success(function (data) { 
      deferred.resolve(data); 
     }).error(function() { 
      deferred.reject(); 
     }); 

    return deferred.promise; 
}; 

Я вижу, что мой пузырь-service.js загружен на странице, но я не могу узнайте, почему я не могу получить доступ к этому методу - почему он говорит, что это не функция?

Это что-то, что оно загружается внутри представления с ut-router, я не могу назвать это ??

+1

Нам также необходимо определение сервиса; вы просто показываете нам вызов 'getBubbleUsers'; а не определение услуги. –

+0

@GeorgeStocker это не было связано с сервисом, это было связано с инъекцией .. смотри на мой ответ –

ответ

4

Как вы вводили ваш BubblesService в п параметр так, в функции она должна быть в 4-м месте,

Контроллер

(function() { 
    'use strict'; 

    angular 
     .module('raqtApp') 
     .controller('BubblesSettingsController', BubblesSettingsController); 

    BubblesSettingsController.$inject = ['$scope', '$rootScope', '$stateParams', 'BubblesService', '$state']; 

    function BubblesSettingsController($scope, $rootScope, $stateParams, BubblesService, $state) { 

     //..your code..// 
    } 
})(); 
+0

TY !!! Я был в этой проблеме часами! :) Я не сделал этого сейчас, когда я сделал 'BubblesSettingsController. $ Injection = ['$ scope', 'BubblesService', '$ rootScope', '$ stateParams', '$ state']; ' I думал, что это было только тогда, когда я вводил на контроллер другим способом - я люблю тебя прямо сейчас - кажется, работает! :) – MrWeiland

+0

@Glad, чтобы помочь вам, спасибо :) –

+0

@MrWeiland Это похоже на то, что вы вставляете объектив и создаете новый экземпляр этого объекта в том же порядке, в который они вводятся –

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