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,都将返回更新后的值