7

我有以下内容:

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 知道 $scope.message 值是什么,但它似乎对此一无所知。有什么我做错了吗?

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

3 回答 3

17

为了访问scopeAngular UI Router 中的父控制器,请使用:

$scope.$parent

然后,您可以免费使用父范围。

于 2013-10-07T08:31:09.697 回答
0

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

var subject = {
    name: 'admin.subject',
    parent: admin,
    url: '/subject',
    ...

下面是如何使用 ui-router 继承 $scope 的完整说明:plunker ex

于 2013-05-20T02:48:27.803 回答
0

有几种方法(和解决方法)可以访问父范围数据......但控制器继承本身是不可能的:https ://github.com/angular-ui/ui-router/wiki/nested-states-&-nested -views#what-do-child-states-inherit-from-parent-states

于 2017-01-03T17:20:15.753 回答