如何从Angular中的另一个控制器访问变量

时间:2015-03-24 10:05:27

标签: html angularjs

我在Angular中有两个控制器,两者都有一个变量。 AddController - >保存/更新 控制器2 - >根据Id

获取单个记录

脚本:

app.controller('AddController', function ($scope, MyService) {

$scope.IsNewRecord = 1; //The flag for the new record
 $scope.Save = function () {
   //Load values in local variable
    };

    //If the flag is 1 then it is new record
    if ($scope.IsNewRecord === 1) {
       //Add new data
        },
    }
    else { 
      //Else Edit the record
    }

SingleController:获取单条记录

app.controller('SingleController', function ($scope, MyService) {
$scope.search = function (Id) {
    var promiseGetSingle = MyService.getbyId(Id);

    promiseGetSingle.then(function (pl) {
        var res = pl.data;
       //I ll be using res value in UI to display in text boxes.

           $scope.IsNewRecord = 0; //If i try to edit and save it back, then 
          //in If-Cluse of above controller should be updated with             /               //IsNewRecord value as 0..
    },

如何实现...如何与另一个控制器通信以传递我的标志值进行编辑。

如果我不清楚,请让我知道..我将要知道吗?

2 个答案:

答案 0 :(得分:0)

您可以使用$rootScope和事件在控制器之间进行通信。查看Scope the documentation $on$broadcast$emit方法。

//On first controller
$rootScope.$broadcast('myEventName', {foo: 'bar'});

//On second controller
$rootScope.$on('myEventName', function (params) {
    params.foo; //bar
});

答案 1 :(得分:0)

您可以使用服务来使用getter和setter传递值。

app.service('FlagHandlerService', function() {
    this.setFlagValue = function(flagValue){
         this.flagValue = flagValue;
    }
    this.getFlagValue = function(){
         return this.flagValue;
    }
});

然后,您可以随时更改值,并在需要时获取值。 我不确定这是否正是您所寻找的,但它可能会指向您正确的方向。