将子控制器的访问范围值访问到父控制器

时间:2015-08-21 11:37:28

标签: angularjs angularjs-scope

    //parent controller (nested controller)
    var appOptometrist = angular.module('OptometristModule', ['angularFileUpload']); 



    appOptometrist.controller('OptometristController', function ($scope, $http) {





    });

//child controller for file upload
    appOptometrist.controller('ChildController', function ($scope, $http, $upload) {

        $scope.onFileSelect = function($files) {
                    $scope.message = "";
                    for (var i = 0; i < $files.length; i++) {
                        var file = $files[i];
                        console.log(file);
                        $scope.upload = $upload.upload({
                            url: 'upload.php',
                            method: 'POST',
                            file: file
                        }).success(function(data, status, headers, config) {
                            $scope.message = data;                
                        }).error(function(data, status) {
                            $scope.message = data;
                        });
                    }
                };



    });

phpfile:

<body class="nav-md" ng-app="OptometristModule">

<div class="container body" ng-controller="OptometristController">

<div ng-controller="ChildController">
<input type="file" id="i_file" name="file" ng-file-select="onFileSelect($files)" multiple />
</div>

1 个答案:

答案 0 :(得分:1)

使用服务,我们可以通过设置&amp;获得。在控制器的注入参数中注入此服务

 angular.module('appOptometrist')
    .service('common', [function() {
        this.criteria = {};
        this.setCriteria = function(criteria) {
            this.criteria = criteria;
        };
        this.getCriteria = function() {
            this.criteria.limit = 1;
            return this.criteria;
        };
    }]);

其他方法是broard cast&amp;上

            appOptometrist.controller('ChildController', function($scope, $http, $upload) {
                $scope.$emit('criteria');
                :
            }

            appOptometrist.controller('OptometristController', function($scope, $http) {
                $scope.$on('criteria', function() {:
                });
            });