2017-02-15 2 views
0

Une usine a accédé par diff. contrôleurs, mais un à la fois AngularJS

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

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

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

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

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

 
}]); 
 

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

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

 

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

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

 
}]); 
 

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

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

 

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

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

 
}]); 
 

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

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

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

 
    \t \t \t \t Precord.array.push(newName); 
 
\t  \t \t } 
 

 
\t \t return Precord; 
 
}]);

Comment un tableau en usine unique accessible par différents contrôleurs mais à un moment de sorte que toute mise à jour dans un contrôleur ne doit pas tenir compte dans d'autres contrôleurs? le precord.array est utilisé dans tous les contrôleurs, mais je veux qu'il soit isolé des autres contrôleurs pendant qu'un contrôleur est utilisé

+0

garder la copie dans le contrôleur respectif à l'aide 'angulaire, copie()' –

+0

Pouvez-vous s'il vous plaît voir le script ci-dessus et dire où pour utiliser la copie angulaire ... toute aide serait appréciée –

Répondre

0

Après avoir examiné votre code, j'ai trouvé que vous deviez conserver une copie du tableau sur le contrôleur niveau de sorte que, si un contrôleur le met à jour alors il ne reflétera pas dans d'autres contrôleurs,

J'ai modifié votre contrôleur et votre usine, alors essayez de l'implémenter dans d'autres contrôleurs également.

Essayez cette

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)); 
     } 

    }]); 

mockFactory

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; 
    }]); 
+0

Merci beaucoup mec Saurabh Agrawal ... ça a marché !!! –

+0

profiter :) @SauravDutta. Marquez-le aussi :) –

+0

@Saureabh Agrawal ... En fait, je suis nouveau à stackoverflow donc son dire moins de 15 réputations ne me laissera pas upvote .... son seul enregistré mais pas affiché –