2016-01-12 3 views
0

У меня есть два разных контроллера, где я пытаюсь передать значения переменных, чтобы сделать некоторые действия, я использовал $broadcast событие angularJS, но его не работает. Есть ли другое решение для решения этой задачи?Как передать переменные значения с одного контроллера на другой?

Я понимаю, что уже задан вопрос о переменных между контроллером, но я хотел знать, что такое другие возможные души.

ctrl1.js

$scope.viewAssessmentFrmCycle = function(assessmentId) { 
     $scope.$broadcast('viewAssessment',assessmentId); 
    } 

ctrl2.js

$scope.$on('viewAssessment',function(s,assessmentId){ 
         console.log(assessmentId); 
         $location.path('/rcsa/editAssessmentFromCycle/'+assessmentId+); 

        }); 
+0

я отредактировал мой вопрос – aftab

ответ

3

Используйте сервис.

angular.module('myApp', []) 
    .service('ShareThis', function() { 
     var value = 'myValue'; 

     return { 
      getValue: function() { 
       return value; 
      }, 
      setValue: function(newValue) { 
       value = newValue; 
      } 
     }; 
    }); 

Тогда вы можете получить доступ к этому в каждом контроллере либо параметров или получения ...

Eg:

myApp.controller('Ctrl1', function($scope, ShareThis) { 
    $scope.value = ShareThis.getValue(); 
}); 

myApp.controller('Ctrl2', function ($scope, ShareThis) { 
$scope.setVal = function(val) { 
    ShareThis.setValue(val); 
} 
} 
+0

, которые имеют смысл спасибо за помощь – aftab

0

Вы можете создать фабрику для хранения данных.

Фабрика:

angular.module('myModule').factory('commonData', function(){ 
    var commonValue = {}; 
    return { 
    getData : function(){ return commonValue }, 
    setData : function(newData) { commonValue = newData } 
    } 
}); 

Затем вводят этот завод в контроллер и использовать набор и получить функции для управления данными.

0

Используйте завод для хранения данных ..

var app = angular.module('test', []); 

// create a mediator factory which will persist the data 
app.factory("MediatorFactory", function() { 
    return { 
     obj: { 
      value: "" 
     } 
    }; 
}); 

app.controller("FirstCtrl", ["MediatorFactory", function(mediator) { 
    this.variable1 = mediator.obj; 
}]); 

app.controller("SecondCtrl", ["MediatorFactory", function(mediator) { 
    this.variable2 = mediator.obj; // this.variable2 = this.variable1 in the controller1 
}]); 
Смежные вопросы