diff 访问的一个工厂。控制器,但一次一个 angularjs

One factory accessed by diff. controllers but one at a time angularjs

var app=angular.module('myApp',[]);

app.controller('FCtrl',['$scope','mockFactory',function($scope,mockFactory){

 $scope.showPerson = function(){
  mockFactory.fetchJson($scope.valueJson)
  .then(function(){
  $scope.persons = mockFactory.array;
  })
 }

   $scope.delPerson = function(i){
    mockFactory.delete(i);
 }

 $scope.addNamePerson = function() {
    mockFactory.ADD($scope.valueFirst);
    };
 
    $scope.showConsolePerson= function(){
     console.log(JSON.stringify(mockFactory.array));
    }

}]);

app.controller('SCtrl',['$scope','mockFactory',function($scope,mockFactory){

 $scope.showMovie = function(){
  mockFactory.fetchJson($scope.valueJson)
  .then(function(){
  $scope.movies = mockFactory.array;
  })
 }


   $scope.delMovie = function(i){
    mockFactory.delete(i);
 }

 $scope.addNameMovie = function() {
    mockFactory.ADD($scope.valueSecond);
    };
 
    $scope.showConsoleMovie= function(){
     console.log(JSON.stringify(mockFactory.array));
    }

}]);

app.controller('TCtrl',['$scope','mockFactory',function($scope,mockFactory){

 $scope.showPlace = function(){
  mockFactory.fetchJson($scope.valueJson)
  .then(function(){
  $scope.places = mockFactory.array;
  })
 }


   $scope.delPlace = function(i){
    mockFactory.delete(i);
 }

 $scope.addNamePlace = function() {
    mockFactory.ADD($scope.valueThird);
    };
 
    $scope.showConsolePlace= function(){
     console.log(JSON.stringify(mockFactory.array));
    }

}]);

app.factory('mockFactory',['$http',function($http){
  
  var Precord = {};

   Precord.array = [];
   Precord.assign = function (value) {
          return $http.get('http://localhost:3000/scripts/' + value + '.json');
      };
      Precord.fetchJson = function(value){
       return Precord.assign(value).success(function(response){
     Precord.array = response.value;
     
    })
      }

      Precord.delete = function(i){
        Precord.array.splice(i,1);
      }
  
      Precord.ADD = function(value){
        var newName = {
           Name: value
        };

        Precord.array.push(newName);
      }

  return Precord;
}]);

单个工厂中的数组如何能被不同的控制器访问,但一次只能访问一个,这样一个控制器中的任何更新都不能反映在其他控制器中? precord.array 正在所有控制器中使用,但我希望它与其他控制器隔离,而一个控制器正在使用它

检查你的代码后我发现你应该在控制器级别保留一个数组副本,这样,如果一个控制器更新它,它就不会反映在其他控制器中,

我已经修改了你的一个控制器和你的工厂,所以也尝试在其他控制器中实现它。

试试这个

FCtrl

    var app=angular.module('myApp',[]);

    app.controller('FCtrl',['$scope','mockFactory',function($scope,mockFactory){

        $scope.fCtrlJSON = [];          

        $scope.showPerson = function(){
            mockFactory.fetchJson($scope.valueJson)
            .then(function(){
                $scope.persons = mockFactory.array;
                $scope.fCtrlJSON = mockFactory.array;           
            })
        }

        $scope.delPerson = function(i){
            mockFactory.delete($scope.fCtrlJSON,i);
        }

        $scope.addNamePerson = function() {
            mockFactory.ADD($scope.fCtrlJSON,$scope.valueFirst);
        };

        $scope.showConsolePerson= function(){
            console.log(JSON.stringify($scope.fCtrlJSON));
        }

    }]);

模拟工厂

 app.factory('mockFactory',['$http',function($http){

        var Precord = {};

        Precord.array = [];
        Precord.assign = function (value) {
            return $http.get('http://localhost:3000/scripts/' + value + '.json');
        };
        Precord.fetchJson = function(value){
            return Precord.assign(value).success(function(response){
                Precord.array = response.value;                 
            })
        }

        Precord.delete = function(arrayData, i){
            arrayData.splice(i,1);
        }

        Precord.ADD = function(arrayData, value){
            var newName = {
                Name: value
            };
            arrayData.push(newName);
        }

        return Precord;
    }]);