如何在角度JS中从一个控制器获取范围值到另一个控制器

时间:2016-01-28 05:41:50

标签: angularjs scope

如何将范围值从一个控制器提取到另一个控制器 的 HTML

<button class="btn btn-info" ng-click="setLanguage('en')">English</button>
<button class="btn btn-info" ng-click="setLanguage('de')">Danish</button>

的Javascript

  .controller('demoCtrl', function($scope) {
    $scope.setLanguage = function(language) {
        $scope.language = language;    
       }
    });

3 个答案:

答案 0 :(得分:0)

您可以使用服务将一个控制器设置的值转换为另一个控制器。

.service('someService', function () {
  this.language = null;
})

控制器

.controller('demoCtrl', function($scope, $rootScope, someService) {
    $scope.setLanguage = function(language) {
        $scope.language = language;
        someService.language = language;
        $rootScope.$broadcast('languageChanged');
    } 
});

在另一个控制器中

.controller('someCtrl', function($scope, $rootScope, someService) {
    $rootScope.$on('languageChanged', function () {
        $scope.language = someService.language;
    }
});

答案 1 :(得分:0)

您可以借助服务在控制器之间共享数据,也可以使用$ emit()和$ broadcast()函数。

AngularJS $ on()中有一个侦听器函数,它将始终监听广播并发出事件。

上述函数的语法:

$scope.$emit(‘name1’,{}); //here you can send your data
$scope.$broadcast(‘name2’,{});
$scope.$on(‘name2’,function(event,args){
});

使用服务时,您只需将服务注入两个控制器并共享数据即可。

.service('someService', function () {
   var self=this;
   self.language = '';
});

.controller('firstCtrl', function($scope, someService) {
    $scope.setLanguage = function(language) {
    $scope.language = language;
    someService.language = language;
    } 
});

.controller('secondCtrl', function($scope, someService) {
    $scope.language = someService.language;
 });

答案 2 :(得分:0)

如果我们想调用示例方法:
"test1 DIV controller"
来自:
"test2 DIV controller"
然后我们可以写上面的方法。

angular.Element(document.getelementByID('testDIV')).scope().example method name();

在test2DIVcontroller中。

例如:

<DIV ID="test1DIV" ng-controller="test1DIV controller"></DIV>
<DIV ID="test2DIV" ng-controller="test2DIV controller"></DIV>