2015-09-30 3 views
1

У меня есть два ng-контроллера, например controller1, controller2, я хочу ввести контроллер2 в контроллер1, и я хочу получить доступ через мою функцию JS API, используя «document.querySelector ('[ng-controller = custom-entity-design- Ctrl])». Можно ли получить? Я пробовал использовать заводские службы, которые также не работают. Он говорит, что ошибка $ scope не определена.Как ввести одну функцию контроллера другому контроллеру с помощью угловых?

исходный код

**controller1** 
    myApp.controller("controller1",function($scope, $document, $http, $localStorage) { 
     $scope.test1 = function() { 
       alert("test1"); 
     }; 
    }); 

    **controller2** 
    myApp.controller("controller2",function($scope,$http,$compile,$localStorage, $log) { 
     $scope.test2 = function() { 
       alert("test2"); 
     }; 
    }); 

Подробнее ... я хочу, чтобы получить доступ к методу $ scope.test2 от controller1.

Я пробовал использовать завод также не работает.

исходный код:

myApp.factory("testService", function($compile, $http, $scope) {  
    $scope.test2 = function() { 
       alert("test2"); 
     }; 
    } 

    factory injected in controller1 

    myApp.controller("controller1",['testService',function($scope, $document, $http, $localStorage) { 
     $scope.test1 = function() { 
       alert("test1"); 
     }; 
    }]); 

Может кто-нибудь помочь мне достичь этого.

+3

вы не можете вводить контроллер в другой, пожалуйста, посмотри на услугах. –

+0

Используйте завод или услугу – pixelbits

+0

@pixelbits. Я попытался использовать завод, он не работает. пожалуйста, посмотрите мою скрипку http://jsfiddle.net/bagya1985/4o7rcj4y/ – bagya

ответ

1

Вы были на правильном пути с использованием .factory():

myApp.factory("testService", function($compile, $http, $scope) {  
    // just return the things in an object. 
    return { 
     name:"angular js", 
     test2 : function(){ alert("test2") } 
    } 
}); 

myApp.controller("controller1",['$scope', '$document', '$http', '$localStorage','testService', function($scope, $document, $http, $localStorage, testService) { 
    $scope.test1 = function() { 
     alert("test1"); 
     testService.test2(); // use the method from the testService. 
    }; 
}]); 

Вы отсутствовали службу в функции арг контроллера и при использовании .factory() сервиса, то убедитесь, что вернуть все в объекте {} с этим объектом вы можете предоставить несколько значений/методы и т.д.

Check the plnkr.

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