AngularJs:存储来自一个控制器的数据,以便以后在另一控制器中使用

时间:2019-01-23 10:49:51

标签: angularjs controller factory

对于我当前正在从事的项目,我目前需要使用在一个控制器(例如controllerA)和另一个控制器(例如controllerB)中生成的数据(对象)。我正在使用factory来执行此操作(甚至尝试过service)。就像这样:

.controller('controllerA', ['$scope', '$rootscope', ....., 'PVFactory', function($scope, $rootscope, ....., PVFactory) {
    $scope.PVObject = //generated here.

      PVFactory.addPVObject($scope.PVObject);

  }])

  .controller('controllerB', ['$scope', '$rootscope', ....., 'PVFactory', function($scope, $rootscope, ....., PVFactory) {
    $scope.new_PVObject = PVFactory.getPVObject(); //need to use the Object from controllerA here.           

  }])

  .factory("PVFactory", function($rootScope) {
    var PVObject = [];

    var addPVObject = function(newObj) {
      if (!PVObject.includes(newObj))
        PVObject.push(newObj);
      $rootScope.PVFactory = newObj;
    };

    var getPVObject = function() {
      return PVObject;
    };

    return {
      addPVObject: addPVObject,
      getPVObject: getPVObject
    };

  })

但是问题出在这里:当我从controllerA过渡到controllerB时,它可以正常工作。

但是,当项目保存在controllerA的末尾,并且以后又在controllerB加载项目而没有从controllerA进行加载时,我将无法访问该值。

从代码中可以看出,我什至尝试使用$rootscope(尽管我知道这不是一个好习惯),但这没有帮助。一旦设置了对象,是否可以保存该对象,因此以后可以访问该对象,而无需通过再次设置该值的控制器?

0 个答案:

没有答案