Angularjs 控制器的作用域未传递到指令

Angularjs 控制器的作用域未传递到指令,angularjs,angularjs-scope,Angularjs,Angularjs Scope,我有这样一个html: <div id="create-group" ng-controller="groupCreateController"> <div id="container"> <h1>Create group</h1> <div class="row"> <div class="col-md-4"><input placehol

我有这样一个html:

    <div id="create-group" ng-controller="groupCreateController">
       <div id="container">
        <h1>Create group</h1>
        <div class="row">
            <div class="col-md-4"><input placeholder="Group Name.." ng-model="group.name"></div>
            <div class="col-md-8">
                <label>Group Description : </label>
                <textarea ng-model="group.description">     </textarea>
            </div>
        </div>
        <br/>
        <div class="row">

            <div class="col-sm-6">
                <usermgr-permission-list group="group"></usermgr-permission-list>
                <button type="button" class="btn btn-md btn-primary" ng-click="btnSave_click($event)">SAVE</button>

            </div>
             <div class="col-sm-6">
                <usermgr-user-list group="group"></usermgr-user-list>
            </div>
        </div>

    </div>
</div>
在第一段代码中,我有两个自定义指令用于用户权限和用户。我随指令传递的组范围不包含我在getUserGroup(id)函数中输入的值。显示组名称和组描述,以便填充控制器中的scope.group,但是,一旦我将其传递给指令,情况就不是这样了。以下是指令代码:

权限列表:

 (function (module) {
    'use strict';
    module.directive('usermgrPermissionList', function () {
        return {
            restrict: 'E',
             scope:{
                 group: '='
            },
            controller: function ($scope, permissionService) {
                 $scope.updatedPermissions=[];
                console.log($scope.group); //it doesnt have the values from the controller ..
              if (!$scope.group.hasOwnProperty('permissions')) {
                    $scope.group.permissions = [];
                }

                function getData() {
                    console.log("inside getDAta for permission list" + $scope.group.id;

                    permissionService.getPermissionsFiltered($scope.group.id).then(function (info) {
                        if (info && info.length > 0) {
                            console.log(info);
                            $scope.group.permissions = info.map(function (a, index, array) {
                                return {
                                    id: a.id,
                                    name: a.name,
                                    description: a.description,
                                    assigned: a.assigned 
                                };  
                            }); 
                        } 
                    }).catch(function (exception) {
                        console.error(exception);

                    });
                } //end of getData()

                $scope.init = function () {
                    getData();
                };


                $scope.init();
            },
            templateUrl: 'r-cube-user-mgt/permission/list/list.tpl.html'
        };
    });
    })(angular.module('r-cube-user-mgt.permission'));

有人能帮忙吗?

您不能将属性分配给这样的数组
$scope.group.id=0
使
$scope.group
对象

$scope.group = {};
或者将属性添加到索引中

 $scope.group = [];
  $scope.init = function () {
    if ($routeParams.hasOwnProperty('id')) {
            //edit mode
            // $scope.trans.heading = 'Edit Release';
            // $scope.trans.saveBtn = 'Save';
            var id = parseInt($routeParams.id);
            getUserGroup(id);
        } else {
            $scope.group[0].id = 0;
            $scope.group[0].permissions = [];
            $scope.assignedPermissions = [];
            $scope.enrolledUsers = [];
            $scope.group[0].users = [];
            $scope.group[0].name = '';
            $scope.group[0].description = '';
        }
 };

因此,我通过添加broadcast在指令加载时发送id来解决这个问题。这成功了

在Group controller中,我添加广播并发送Group.id

    function getUserGroup(id) {
                    userGroupService.getbyid(id).then(function (info) {

                        if (info !== undefined && info.id === id) {
                            $scope.group.id = info.id;
                            $scope.group.name = info.name;
                            $scope.group.description = info.description;
                            console.log($scope.group);                                                      
                     $rootScope.$broadcast(rCubeTopics.userMgtPermissionLoadData, $scope.group.id);
                        }

                    }).catch(function (exception) {
                        console.error(exception);

                    });
                }
在许可指令中,获取该广播:

      $scope.$on(rCubeTopics.userMgtPermissionLoadData, function (event, id) {
                    console.log($scope.group.id);
                    getData();
                });

我像你说的那样改了。但是现在我得到了一个错误:TypeError:无法设置未定义的属性“id”使用
0
index更改
getUserGroup(id)
内容,所以您可以创建一个plnkrwhere是服务它基本上从数据库获取组名、描述和id。这是工作,我能够填写文本框。但是,当我将组范围发送到我的用户权限指令时,该组范围的长度显示为=0,并且名称、说明和id不在其中。。。
      $scope.$on(rCubeTopics.userMgtPermissionLoadData, function (event, id) {
                    console.log($scope.group.id);
                    getData();
                });