2017-01-25 34 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]; 
     } 
    }; 
}); 

但我CTRL 2頁負載之間傳遞值,當我在使用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]; 
     } 
    }; 
}]); 
相關問題