gpt4 book ai didi

javascript - 使用 Angularjs 将数据传递到不同的 Controller

转载 作者:行者123 更新时间:2023-12-03 04:27:50 25 4
gpt4 key购买 nike

我在一个 Controller 中有以下代码。

    $scope.DataModel= [];
$scope.DataModelTexts= { buttonDefaultText: '' };

我将在另一个 Controller 中使用相同的代码。现在,我不想在第二个 Controller 中编写相同的代码,而是想知道是否有一种方法可以将其放入某个工厂或服务中的通用代码中,并在两个 Controller 中使用它。我尝试阅读有关工厂和服务的内容,但我对如何在我的场景中使用其中任何一个感到有点困惑。

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

最佳答案

您走在正确的道路上,可以使用工厂或服务在 Controller 之间共享代码。请注意,在 Angular 服务(和工厂)中是单例;它们在应用程序启动时实例化一次,然后每当您将其注入(inject) Controller 时,您都会引用同一个实例。考虑以下代码:

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 注入(inject)其中,并可以使用该服务的方法来设置新值。现在,对于同一状态的任何后续调用(例如通过 ControllerB),将返回更新的值。

关于javascript - 使用 Angularjs 将数据传递到不同的 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43622281/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com