0

所以这是我的问题,我无法$scope.documents从我的指令中更新。$scope.parentUpdate({ documents: $scope.docType})似乎根本没有执行,所以我的文件永远不会更新。$scope.docType= result获取我需要的所有数据,但它不会将其推回父控制器。

app.controller('docGridController',['$scope','getSideNav', 'getDocuments', 
            function($scope, getSideNav, getDocuments){

getSideNav().then(function(result){$scope.SideNav = result;
},
                    function(error){$scope.error = result;});

$scope.slideToggle = true;


$scope.documents=[];

$scope.update = function(k){

    $scope.documents = k;
    consle.log($scope.documents);
}}]);

app.directive('foSidenav',['getDocuments',function(getDocuments){

    return{

        replace: true,
        scope: {

            info:'=',
            docType:'=',
            parentUpdate:'&'
        },
        templateUrl:function(element,attr){

            return  attr.url;
        },
        controller: ['$scope','$element', '$attrs' ,'getDocuments',
                        function($scope,$element, $attrs, getDocuments){

            $scope.selectDocType = function(id)
            {
                getDocuments(id).then(function(result){$scope.docType= result;
                    console.log($scope.docType);
                    alert('Printed results');
                    $scope.parentUpdate({ documents: $scope.docType});
                    },
                    function(error){$scope.error = result;});


            };

        }]
    };
}]);

这是我在模板中使用的标签

<ul class="side-nav">
                    <li class="mainCat" ng-repeat=" item in info">
                        <a href="#" id="CatHeader" ng-click="slideToggle =! slideToggle">
                            <i class="{{item.displayIcon}} left-bar"></i>
                            <span ng-bind-html="item.label | html"></span>
                        </a>
                        <ul class="subCat slide-toggle" ng-show="slideToggle">  


                            <li ng-repeat="subItem in item.docTypes">
                                <a href="#" ng-click="selectDocType(subItem.id)" >
                                <i class="fi-folder"></i>
                                <span ng-bind-html="subItem.Name | html"></span>
                                </a>
                            </li>


                        </ul>
                    </li>           

这是指令调用

<fo-sidenav url="{!URLFOR($Resource.FOPS_Resource, 'components/sidenav.html')}" info='SideNav' docType='documents' parentUpdate="update(documents)"></fo-sidenav>       

有任何想法吗??这些范围真的让我失望

4

1 回答 1

2

我认为问题在于您如何在 html 中使用隔离范围内的变量。现在您正在使用它们,如下所示:

<fo-sidenav url="{!URLFOR($Resource.FOPS_Resource, 'components/sidenav.html')}"info='SideNav' docType='documents' parentUpdate="update(documents)"></fo-sidenav>

尝试如下:

<fo-sidenav url="{!URLFOR($Resource.FOPS_Resource, 'components/sidenav.html')}" info='SideNav' doc-type='documents' parent-update="update(documents)"></fo-sidenav>

有关在此处阅读匹配指令规范化部分的更多信息

于 2015-11-05T20:07:56.153 回答