访问AngularJS中特定功能的范围

时间:2014-06-30 08:10:41

标签: angularjs

我在AngularJS中有以下含糊之处。 我正在使用AngularJS ui Modal并提供 关于这个模态的控制器。从这个控制器 我想从其他范围访问变量。什么是 这是一个有角度的方式吗?这是我的代码:

   controllers.controller('ResultCtrl', ['$scope', '$routeParams', '$http', '$q', 'Matches', '$modal',
        function ($scope, $routeParams, $http, $q, Matches, $modal) {

            /**
             * other code
             * 
             * from this scope i can access 
             * $scope.terms
             */
            $scope.mergeTerms = function() {
                var ModalInstanceCtrl =  function ($scope, $modalInstance) {
                    /**
                     * Here I want to access 
                     * $scope.terms as a above 
                     * function
                     */
                }
            }

        });

祝你好运。

2 个答案:

答案 0 :(得分:1)

如果您确定,您的ModalInstanceCtrl控制器将始终位于ResultCtrl内,您可以使用$scope.$parent.terms,但情况可能并非总是如此。

使用Angular-ui模态时,您可以传递可以注入模态控制器的对象:

    $scope.modalInstance = $modal.open({
      templateUrl: 'modal.html',
      controller: 'ModalInstanceCtrl',
      resolve: {
        terms: function() {
          return $scope.terms;
        }
      }
    });

通过这样做,您可以简单地将术语注入控制器:

    var ModalInstanceCtrl =  function ($scope, $modalInstance, terms) {
        $scope.terms = terms;
        /**
         * Here I can access $scope.terms in terms
         * which was injected into this controller
         */
    }

答案 1 :(得分:1)

您需要将其传递到模态实例控制器,以便它可以在自己的范围内解决它。像这样:

var modalInstance = $modal.open({
    resolve: {
        terms: function () {
            return $scope.terms;
        }
    }
});