AngularJS - 在控制器之间共享变量

16 浏览
0 Comments

AngularJS - 在控制器之间共享变量

我知道这个问题以前已经发布过,但对于我特定的问题,我仍然感到困惑。\n我的第一个控制器:\n

myApp.controller("buttonCtrl", function($scope){
    $scope.johnny = [
        {quote: "为了我的公主,无所不能", controller: Princess},
        {quote: "别问了", controller: DontAsk}];
}

\n现在我想在这个控制器中使用$scope.johnny对象:\n

function Princess($scope){
    $scope.play = function(){
    //在这里使用$scope.johnny.quote或类似的内容
    }
}

\n如何实现这个目标?我看到过使用$rootScope或服务的帖子;然而,在我的情况下,我该如何实施呢?\n非常感谢。

0
0 Comments

AngularJS - 在控制器之间共享变量的问题是一个常见的需求。通常情况下,每个控制器都有自己的作用域,因此无法直接访问其他控制器中的变量。然而,可以通过使用AngularJS的服务/工厂来解决这个问题。

在上面的示例中,我们使用了一个工厂函数`userFactory`来创建一个服务,其中包含一个名为`users`的变量。该变量是一个包含两个用户对象的数组,每个对象都有一个`userId`和`userName`属性。

然后,我们在两个控制器`ControllerOne`和`ControllerTwo`中注入了`userFactory`服务,并分别创建了`getUserOne`和`getUserTwo`函数。这些函数通过访问`userFactory.users`数组中的元素来获取用户对象,并使用`JSON.stringify()`方法将其转换为字符串后弹出一个警告框。

这样,无论在哪个控制器中点击相应的按钮,都可以访问`userFactory`中的`users`变量,并获取到相应的用户对象。

此外,您还可以参考其他资源,如Stack Overflow上的相关问题,以获取更多关于在AngularJS中在控制器之间传递变量的方法。

感谢那位提供了详细解答的人,这对我帮助很大!

0