2015-01-27 3 views
2
angular.module('starter.controllers', []) 
    .controller('controller1',function($scope) { 
    $scope.function1= function() { 
    --------------- 
    }) 
    .controller('controller2',function($scope) { 
    $scope.function1= function() { 
    //is it possible to access method form controller1 in controller2 like this 
controller1.function(); 
    }) 

Я начинаю с углового JS, пожалуйста, помогите мне заполнить мой код.Доступ Метод контроллера Один в контроллере 2 в AngularJS

+3

нет, вы не можете получить доступ к этому во втором контроллере, но если вы хотите, чтобы что-то подобное разделило функцию b/w cont ролики создают угловое обслуживание. – squiroid

ответ

2

В AngularJS вы используете Услуги для таких вещей.

Просто создайте службу с помощью функции вы хотите использовать несколько раз:

.service('myService', function() { 
    return function() { 
     //your function1 
    }; 
}) 

Затем вы используете эту службу, как зависимость:

.controller('controller2', [ 
    '$scope', 
    'myService',//say you want the service as second param 
    function($scope, myService) { 
     $scope.function1 = function() { 
      myService();//your function is here 
     }; 
    } 
]) 

И то же самое в другом контроллере:

.controller('controller1', [ 
    '$scope', 
    'myService', 
    function($scope,myService) { 
     $scope.function1 = myService;//bind the service to the scope 
    } 
]) 
+0

Кроме того, если вам нужна услуга с несколькими функциями, просто возвращайте объект с помощью переменных функции и вызывайте их как 'myService.niceFunction()' из любого места. – DonJuwe

+0

@ DonJuwe, конечно, если он использует другую функцию и в другом месте, чем умнее – Nano

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