如何访问父控制器$scope子控制器中的值

How to access parent controller $scope values in child controller

本文关键字:控制器 scope 何访问 访问      更新时间:2023-09-26
    var parent = angular.module('parent', ['swxSessionStorage']);
    parent.controller('parent', [
        $scope.idMenu = [{
                label : "id1",
                value : 1
            }]
$scope.name=[abc,def];
     /**
         * Calling child controller
         */
        var childView = $scope.$new(true);
        $controller('child',{$scope:childView});
        $scope.someMetod = function(){
            childView.getChildData();
        }
        }

        --------------
    parent.controller('child', [
    $scope.getChildData = function(){
        $scope.idMenu.value
    }

我无法访问子控制器中的父 $scope.idMenu?

但是我可以访问$scope.name,这只是一个数组,但我无法访问JsonArray。

可能是什么原因?

在父控制器中

$scope.$broadcast('event_name', function (){ 
//action on event     
}); 

在子控制器中

$scope.$on('event_name', function () {   
//data required to pass in parent controller      
});

最好的方法是使用服务。

app.service('dataService', function() {
  var dataList = [];
  function addData(data) {
    dataList.push(data);
  };
  function getData() {
    return dataList;
  };
  return {
    add: addData,
    get: getData
  };
});

在父控制器中,通过服务存储信息:

app.controller('parent', function($scope, dataService) {
  $scope.addMyData = function(obj) {
    dataService.addData(obj);
  };
});

在子控制器中,通过服务检索信息:

app.controller('child', function($scope, dataService) {
  $scope.products = dataService.getData();
});

不能将$scope注入服务,但可以存储数据。