当使用ui-router时,控制器可以从父控制器继承作用域吗?



我有以下内容:

var admin = {
   name: 'admin',
    url: '/admin',
    views: {
        'nav-sub': {
            templateUrl: '/Content/app/admin/partials/nav-sub.html',
            controller: function ($scope) { $scope.message = "hello"; }
        }
    },
    controller: ['$scope', function ($scope) {
        $scope.message = "hello";
    }]
}
var subject = {
    name: 'subject',
    parent: admin,
    url: '/subject',
    views: {
        'grid@': {
            templateUrl: '/Content/app/admin/partials/grid-subject.html',
            controller: 'AdminGridSubjectController',
        }
    }
};

我想AdminGridSubjectController知道什么$范围。消息值是,但它似乎对它一无所知。我做错了什么吗?

stApp.controller('AdminGridSubjectController', ['$scope', function ( $scope ) {
    var a = $scope.message;
}]);

要访问Angular UI路由器中父控制器的scope,请使用:

$scope.$parent

您的问题可能是名称应该反映其中的父元素:

var subject = {
    name: 'admin.subject',
    parent: admin,
    url: '/subject',
    ...
下面是如何通过ui-router继承$scope的完整示例:plunker ex

有几种方法(和变通方法)来访问父作用域数据…但控制器继承本身,是不可能的:https://github.com/angular-ui/ui-router/wiki/nested-states-&-nested-views#what-do-child-states-inherit-from-parent-states

最新更新