2017-01-25 9 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'); 
    } 
}); 

私はrootscopeを使用し、最初のリフレッシュにコントローラangularjsでコントローラ間でデータを動的に取得する方法は?

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

私CTRL2ページがロード間で値を渡してみました、私はCTRL2で

Scopes.get('Ctrl1').value; 

を使用する場合には、エラーが発生します。助けてください

答えて

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"> 

利用可能である理由です。あなたの答えをありがとう:)私は角度でイオンを使用していました。ファクトリーだけでデータを保存し、フェッチは魅力的に機能しました。

2

$rootscopeとあなたの工場を注入する必要があります。

ファクトリは現在のコントローラ/ディレクティブスコープ にアクセスできません。彼らは、しかし アプリケーションのルートへのアクセス権を持っているし、$ rootScopeこれは私のために働いた

.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]; 
     } 
    }; 
}]); 
関連する問題