Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Angularjs将数据传递给不同的控制器_Javascript_Angularjs_Service_Factory - Fatal编程技术网

Javascript 使用Angularjs将数据传递给不同的控制器

Javascript 使用Angularjs将数据传递给不同的控制器,javascript,angularjs,service,factory,Javascript,Angularjs,Service,Factory,我有以下代码在一个控制器 $scope.DataModel= []; $scope.DataModelTexts= { buttonDefaultText: '' }; 我将在另一个控制器中使用相同的代码。现在,我不想在第二个控制器中也编写相同的代码,而是想知道是否有办法将其放入某个工厂或服务的通用代码中,并在两个控制器中使用。我曾试图阅读有关工厂和服务的文章,但我对如何在我的场景中使用其中任何一种都有点困惑 任何信息都可以帮助我获得更多关于angularjs工厂和服务的知识。

我有以下代码在一个控制器

    $scope.DataModel= [];
    $scope.DataModelTexts= { buttonDefaultText: '' };
我将在另一个控制器中使用相同的代码。现在,我不想在第二个控制器中也编写相同的代码,而是想知道是否有办法将其放入某个工厂或服务的通用代码中,并在两个控制器中使用。我曾试图阅读有关工厂和服务的文章,但我对如何在我的场景中使用其中任何一种都有点困惑


任何信息都可以帮助我获得更多关于angularjs工厂和服务的知识。谢谢

您可以使用
.config()
run()
块(在这里很好:)将这些重用的变量绑定到$rootScope,然后从控制器或服务中的
$rootScope.DataModel
$rootScope.DataModelTexts
调用它们(只要您将$rootScope注入这些控制器和服务中)。

您走上了正确的道路,可以使用工厂或服务在控制器之间共享代码。请注意,在angular services(和工厂)中是单独的;当应用程序启动时,它们被实例化一次,然后当您将其注入到控制器中时,您引用的是同一实例。
var myApp = angular.module('myApp',[]);

myApp.service('MyService', function() {
  let _someValue = 'Initial Value';
  this.setValue = function(value){
    _someValue = value;
  }
  this.getValue = function(){
    return _someValue;
  }
});

//First Controller Run
myApp.controller('ControllerA', function($scope, MyService) {
  MyService.getValue(); //Initial Value
  MyService.setValue("BRAND NEW VALUE!!!");
});

//Run after ControllerA
myApp.controller('ControllerB', function($scope, MyService) {
  MyService.getValue(); //BRAND NEW VALUE!!!
});
您将看到MyService持有someValue的状态。ControllerA将MyService注入其中,并可以使用该服务的方法设置新值。现在,对于该状态的任何后续调用,例如ControllerB,都将返回更新后的值