2017-01-25 4 views
3
.controller('Ctrl1', function($scope, $http) { 

    $scope.langChecked = function(){ 
    $scope.value = $('input[name=lang-check]:checked').val(); 
    console.log($scope.value); 
    }; 
}) 

.controller('Ctrl2', function($scope, $http, $state, Scopes) { 
    if($scope.value='something'){ 
     alert('scope passed'); 
    } 
}); 

ich versuchte rootscope und Übergabe von Werten zwischen SteuerungenWie man Daten in einem angularjs dynamisch von einem Controller zu einem anderen bekommt?

.run(function ($rootScope) { 
    $rootScope.$on('scope.stored', function (event, data) { 
     console.log("scope.stored", data); 
    }); 
}) 
.factory('Scopes', function ($rootScope) { 
    var mem = {}; 

    return { 
     store: function (key, value) { 
      $rootScope.$emit('scope.stored', key); 
      mem[key] = value; 
     }, 
     get: function (key) { 
      return mem[key]; 
     } 
    }; 
}); 

aber meine ctrl 2 Seite geladen wird zuerst auf Refresh verwenden und es gibt Fehler, wenn ich

verwenden
Scopes.get('Ctrl1').value; 

in Ctrl2. Bitte helfen

Antwort

0
.factory('Authorization', function() { 
    authorization = {}; 
    authorization.variable= ''; 
    return authorization; 
}) 

.controller('Ctrl1', function($scope, Authorization) { 
    $scope.input = Authorization; 
    console.log($scope.input.variable); 
}) 

.controller('Ctrl2', function($scope, Authorization) { 
    $scope.input = Authorization; 
    console.log($scope.input.variable); 
}); 

<input data-ng-controller="Ctrl1" type="text" ng-model="input.variable"> 

Das ist für mich gearbeitet. Danke für deine Antworten :) Ich benutzte ionische mit eckigen. Verwenden Sie nur Fabrik, um Daten zu speichern und zu holen arbeitete wie ein Charme.

2

müssen Sie Ihre Fabrik mit $rootscope injizieren.

Fabriken haben keinen Zugriff auf den aktuellen Controller/Direktive scope , weil es keinen gibt. Sie haben Zugriff auf die Wurzel der Anwendung obwohl und deshalb $ rootScope verfügbar ist

.factory('Scopes',["$rootScope", function ($rootScope) { 
    var mem = {}; 

    return { 
     store: function (key, value) { 
      $rootScope.$emit('scope.stored', key); 
      mem[key] = value; 
     }, 
     get: function (key) { 
      return mem[key]; 
     } 
    }; 
}]); 
Verwandte Themen