2017-10-19 6 views
0

Veuillez me faire savoir si vous n'avez pas compris mon approche. Il est basé sur la grille Angular-UI. J'ai deux contrôleurs (ctrl1.js, ctrl2.js). J'obtiens des données en utilisant la méthode get sur chaque contrôleur de différents webservices.enableCellEditing dans Angular-UI-grid

timeSeries est un objet dans webservice (getTimeSeriesData) que j'ai appelé dans Ctrl1.js. Il y a 1500 objets dans timeSeries et pour le dernier objet (1500th) le dernier est vrai et pour les autres le dernier n'est pas défini. Je devrais pouvoir éditer (dans ctrl2.js) seulement si le dernier est vrai, sinon l'utilisateur ne devrait avoir aucune fonction pour éditer la colonne.

code Ctrl1.js

$rootScope.test = false;  
     $rootScope.latest = timeSeries.latest; 
     if ($rootScope.latest == true){ 
      $rootScope.test = true; 
      console.log($rootScope.test); 
     } // everything is good here, I am getting true in console here. 

Pour activer l'édition cellulaire J'utilise deux approches dans le problème de Ctrl2.js :-(est ici son non modifiable par exemple cellEdit est faux.)

cellEditableCondition: function($rootScope){ 
         return $rootScope.test 
         }, 

enableCellEdit: $rootScope.test; 

Répondre

0
Added an extra button click to display the value. 

    <div> 
     <h1>Testing</h1> 
     <div ng-controller="secondCtrl as second"> 

     <button type="submit" ng-click='second.getStatus()'>Add Message</button> 
     <p> {{second.enableCellEdit}}</p> 
     </div> 

     <div ng-controller="firstCtrl as first"> 

     </div> 
    </div> 



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


    app.controller('firstCtrl', function ($rootScope){ 

     $rootScope.test = false;  
     $rootScope.latest = true; 
     if ($rootScope.latest === true){ 
      $rootScope.test = true; 
      console.log($rootScope.test); 
     } 

    }); 

    app.controller('secondCtrl', function ($rootScope){ 
     var self = this; 

     self.getStatus =function(){ 
      self.enableCellEdit = $rootScope.test; 
     } 


    }); 

Si vous souhaitez partager les données entre deux contrôles différents sur deux modèles différents, l'utilisation de Factory est la meilleure approche. Veuillez vous reporter au POST pour le partage des données d'usine.

+0

Je ne parviens pas à obtenir la valeur dans controller2 à partir de controller1 en utilisant rootscope – sahil

+0

Des instructions assez confuses. Selon la description, j'ai compris que vous vouliez accéder aux données que vous avez définies dans le contrôleur 1 (premier Ctrl) dans le contrôleur 2 (deuxième contrôle). Si la même solution ci-dessus fonctionne. Après avoir lancé la solution sur le bouton, vous pouvez définir la valeur réelle dans le contrôleur 2 tel qu'il a été défini dans le contrôleur 1. Pourriez-vous élaborer davantage sur ce que vous cherchez exactement. –