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

时间:2016-02-03 07:03:42

标签: javascript html angularjs

    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
    }

我无法在Child控制器中访问父$ scope.idMenu?

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

可能是什么原因?

2 个答案:

答案 0 :(得分:1)

在父控制器中

svn switch --relocate

在子控制器中

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

答案 1 :(得分:0)

最好的方法是使用服务。

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注入服务,但可以存储数据。