AngularJS 1.5两个控制器通过服务传递数据

时间:2017-01-27 15:45:56

标签: angularjs

Angular 1.5.8 我有两个控制器,可以理解其他控制器如何找到第一个控制器的结果。

第一个控制器

在鼠标按下时,我运行一个函数,在服务中为我收集一些数据

$scope.mouseUpEvent = function () {

            customService.mycustom();
}

服务

app.service('customService', function(){
 this.mycustom = function(){
        var cvar = avar + bvar;
        return $scope.cvar;
    }
  }

其他Controler *

$scope.gridCustom = customService.var;

我如何从其他控制器访问cvar?

我的第一个控制器需要调用一个函数来计算所选内容而不是我的第二个控制器来从我的服务中读取所选内容并进行自定义内容操作。

我已尝试在服务中设置退货方式,但仍然不了解如何将结果存储在方法中并设置手表。

服务

app.service('customService', function(){
return{
       mycustom : function(){
           var cvar = avar + bvar;
           return $scope.cvar;
         }
     }
  }

2 个答案:

答案 0 :(得分:1)

与使用方法

在controller1中访问的方式相同
$scope.gridCustom = customService.mycustom();

您的服务应该是,

app.service('customService', function(){
 this.mycustom = function(){
        var cvar = avar + bvar;
        return cvar;
    }
  }

答案 1 :(得分:0)

您可以将服务视为一盒数据库,它基本上是一个数据库。您可以通过一个控制器设置vairables,然后使用另一个控制器来获取它。 你可以使用手表,但手表很慢。它基本上每秒都在寻找变化。

在我的情况下,我应该在服务中存储一个函数,我可以存储在控制器中

从控制器1开始:

$scope.mouseUpEvent = function () {
     //You called your function and stored in the service the result
     customService.result = $scope.mycustom();
}
// you function
$scope.mycustom = function(){
        var cvar = 4 + 6;
        return cvar;
}

服务

app.service('customService', function(){
    return{
        // you set you result to empty at first, and first controller will insert the result
         result : ''

     }
  });

控制器2

//Now lets fetch the result

console.log(customService.result);

请不要忘记,在每个控制器中,您需要指定服务。作为每个服务上的角度继电器工作。 Angular仅收集您请求的数据/服务。