0

Im пытается вызвать функцию заводскую от контроллера, используя значения, но им получать TypeError Controllercodeиспользовать значения для вызова функции фабрики в угловом

$scope.onButtonHovered = function(event){ 
console.log("event.descriptorName "+ event.descriptorName); 
      console.log("SERVICES[event.descriptorName].name "+ SERVICES[event.descriptorName].name); 
      $scope.service = SERVICES[event.descriptorName].name; 
      $scope.btnOptions = $scope.service.buttonOptions(); 
      } 

печатает: event.descriptorName HOME

УСЛУГИ [event.descriptorName] .name homeService

VM92009 angular.js: 13642 Ty peError: $ scope.service.buttonOptions не является функцией

Услуги:

angular.module('ht.constants'). 
    value('SERVICES',{ 
         HOME : {name : 'homeService', descriptor : {}}, 
CONTACT: {name : 'contactService', descriptor : {}}, 
        }); 

завод:

 angular.module('ht.home'). 
     factory('homeService', [ HomeService]); 
    var homeService= {} 
     function HomeService() { 
    homeService.buttonOptions = function(){ 
       if(homeData==null) 
        init(); 
       return homeData; 
      } 
return homeService; 
    } 

Im пытается вызвать несколько служб с помощью одного контроллера, во время печати im получать ожидаемое, но когда я добавляю то же самое с заводской функцией im, получая ошибку. Спасибо за помощь

+0

Что такое 'событие'? –

+0

нажмите кнопку пользовательского события –

+0

преобразуйте 'значение()' в службу вместо этого и верните соответствующую другую службу оттуда. Был бы похож на главную услугу, и вам не нужно было вводить другие в контроллер – charlietfl

ответ

0

изменения этой линии

$scope.service = SERVICES[event.descriptorName].name; 

к этому

$scope.service = SERVICES[event.descriptorName]; 
+0

Интересно, как это помогает УСЛУГА [event.descriptorName] дает HOME не желаемый домашний сервис. И я попробовал, но по-прежнему ту же ошибку. VM197634 angular.js: 13642 TypeError: $ scope.service.buttonOptions не является функцией –

0
$scope.btnOptions = eval($scope.service).buttonOptions(); 

Eval сделал трюк. Спасибо всем за то, что помогли мне.

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