如何将变量值从一个控制器传递到另一个控制器?

14 浏览
0 Comments

如何将变量值从一个控制器传递到另一个控制器?

我有两个不同的控制器,我尝试传递变量值来执行一些操作,我使用了$broadcast angularJS事件,但它不起作用。有没有其他解决方案来实现这个任务?\n我知道已经有关于控制器之间变量的问题,但我想知道其他可能的解决方案。\nctrl1.js\n

$scope.viewAssessmentFrmCycle = function(assessmentId) {
      $scope.$broadcast('viewAssessment',assessmentId);
    }

\nctrl2.js\n

 $scope.$on('viewAssessment',function(s,assessmentId){
                      console.log(assessmentId);
                      $location.path('/rcsa/editAssessmentFromCycle/'+assessmentId+);
                    });

0
0 Comments

在AngularJS中,有时候我们需要在一个控制器中使用另一个控制器中的变量值。然而,由于控制器之间的隔离性,直接访问另一个控制器的变量是不可能的。因此,我们需要找到一种方法来传递变量值。

一个常见的解决方法是使用工厂(Factory)来存储数据。工厂是AngularJS中用于创建可被多个控制器共享的对象的一种方式。我们可以创建一个工厂来持久化数据,并在需要时访问这些数据。

下面是一个示例代码,演示了如何使用工厂来传递变量值。

var app = angular.module('test', []);
// 创建一个中介工厂,用于持久化数据
app.factory("MediatorFactory", function() {
    return {
        obj: {
            value: ""
        }
    };
});
// 控制器1
app.controller("FirstCtrl", ["MediatorFactory", function(mediator) {
    this.variable1 = mediator.obj;
}]);
// 控制器2
app.controller("SecondCtrl", ["MediatorFactory", function(mediator) {
    this.variable2 = mediator.obj; // this.variable2 = this.variable1 in the controller1
}]);

在这个示例中,我们创建了一个名为`MediatorFactory`的工厂,它返回一个包含一个`value`属性的对象。这个对象在不同的控制器中被共享。

在`FirstCtrl`控制器中,我们将工厂返回的对象赋值给`variable1`。同样地,在`SecondCtrl`控制器中,我们将相同的对象赋值给`variable2`。这样,`variable2`就可以访问`FirstCtrl`控制器中的变量值。

通过使用工厂来持久化数据,我们可以在不同的控制器之间传递变量值,实现数据共享的目的。这种方法在AngularJS中非常常用,特别是在大型应用程序中需要共享数据时。

0
0 Comments

如何将变量值从一个控制器传递到另一个控制器?

问题的原因是在AngularJS中,控制器之间的数据传递是有限制的。每个控制器都有自己的作用域,无法直接访问其他控制器的变量。

解决方法是创建一个工厂(factory)来保存数据。工厂是一个单例对象,可以在不同的控制器之间共享数据。下面是一个示例的工厂代码:

angular.module('myModule').factory('commonData', function(){
  var commonValue = {};
  return {
    getData : function(){ return commonValue },
    setData : function(newData) { commonValue = newData }
  }
});

在需要传递数据的控制器中,注入(commonData)工厂,并使用其提供的set和get函数来操作数据。通过调用setData函数,可以将数据设置为commonValue变量的新值。通过调用getData函数,可以获取commonValue的当前值。

这样,就实现了在不同控制器之间传递变量值的需求。在一个控制器中设置变量的值,另一个控制器就可以通过工厂来获取这个值,实现了数据的共享。

0
0 Comments

AngularJS中,如果想要在一个控制器中传递变量值到另一个控制器中,可以使用一个服务(service)来实现。

首先,在应用程序的模块中创建一个服务(service),命名为"ShareThis",并定义一个变量value,初始值为"myValue"。然后,在服务中返回一个对象,该对象包含两个方法:getValue用于获取value的值,setValue用于设置value的值。

接下来,在每个控制器中,通过依赖注入服务"ShareThis",即可访问该服务。在Ctrl1控制器中,通过调用ShareThis的getValue方法,将value的值赋给$scope.value。在Ctrl2控制器中,定义一个setVal方法,接收一个参数val,然后调用ShareThis的setValue方法,将val的值赋给value。

这样,就可以在不同的控制器中通过服务来传递变量值了。

示例代码如下:

angular.module('myApp', [])
    .service('ShareThis', function () {
        var value = 'myValue';
        return {
            getValue: function () {
                return value;
            },
            setValue: function(newValue) {
                value = newValue;
            }
        };
    });
myApp.controller('Ctrl1', function($scope, ShareThis) {
  $scope.value = ShareThis.getValue();
});
myApp.controller('Ctrl2', function ($scope, ShareThis) {
 $scope.setVal = function(val) {
   ShareThis.setValue(val); 
 }
});

这样就可以在不同的控制器中共享变量值了。

0