Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用ng if=";时,折叠/折叠密封不起作用;!“崩溃”;_Javascript_Angularjs - Fatal编程技术网

Javascript 使用ng if=";时,折叠/折叠密封不起作用;!“崩溃”;

Javascript 使用ng if=";时,折叠/折叠密封不起作用;!“崩溃”;,javascript,angularjs,Javascript,Angularjs,由于加载了大量记录,我的树出现了性能问题,我必须使用ng if=“!collpsed”来解决这个性能问题。但是,有了它,collapseAll或collapseAll函数就不再工作了。当我在控制器中使用它们时,总是会出现相同的错误: "Uncaught TypeError: Cannot read property 'collapse' of undefined". function geraArvoreDepartamentos() { angular.module('folder

由于加载了大量记录,我的树出现了性能问题,我必须使用ng if=“!collpsed”来解决这个性能问题。但是,有了它,collapseAll或collapseAll函数就不再工作了。当我在控制器中使用它们时,总是会出现相同的错误:

"Uncaught TypeError: Cannot read property 'collapse' of undefined". 
function geraArvoreDepartamentos() {
    angular.module('folderApp', ['ui.tree', 'ui.tree-filter', 'ui.highlight'])
    .controller('folderCtrl', function ($scope, $filter) {

        $scope.collapsed = false;

        var departamentoNomeCampo = 'title';
        var departamentoIdCampo = 'id_depto';
        var departamentosFilhosNomeCampo = 'items';

        $scope.treeFilter = $filter('uiTreeFilter');
        $scope.col_defs = [{ field: "id" }]

        $scope.toggle = function (scope) {
            $scope.collapsed = !$scope.collapsed;
        };

        function getRootNodesScope(rootId) {
            var index = -1;
            for (var i = 0, len = $scope.data.length; i < len; i++) {
                //if ($scope.data[i].id_depto === rootId) {
                if ($scope.data[i].id === rootId) {
                    index = i;
                    break;
                }
            }

            return angular.element(document.getElementById("options")).scope().$nodesScope.childNodes()[index];
        }

    }).filter('trust', function ($sce) {
        return function (val) {
            return $sce.trustAsHtml(val);
        };
    });
};
当我以这种方式调用colapsell angular方法时,就会发生此错误,例如:“getRootNodeScope(id).collapseAll();”。但是,如果我删除所有ng if=“collapsed”,则不再发生此错误。如果不删除ng if=“collapse”,如何使用折叠/折叠所有角度函数

下面是我的代码片段:

<div ng-app="folderApp" ng-controller="folderCtrl" id="deptoBodyController">
    <div>
        <div>
            <!-- Nested list template -->
            <script type="text/ng-template" id="items_renderer.html">
                <div vs-repeat>
                    <ol ui-tree-nodes ng-model="item.items">
                        <li ng-repeat="item in item.items" ui-tree-node ng-include="'items_renderer.html'"
                            ng-hide="!treeFilter(item, pattern, supportedFields) && !dim"
                            ng-class="{'filtered-out':!treeFilter(item, pattern, supportedFields) && dim}"
                            collapsed="true"
                            ng-if="!collapsed">
                        </li>
                    </ol>
                </div>
            </script>

            <div ui-tree="options">
                <div vs-repeat>
                    <ol ui-tree-nodes ng-model="list">
                        <li ng-repeat="item in list" ui-tree-node ng-include="'items_renderer.html'"
                            ng-hide="!treeFilter(item, pattern, supportedFields) && !dim"
                            ng-class="{'filtered-out':!treeFilter(item, pattern, supportedFields) && dim}"
                            collapsed="true"
                            ng-if="!collapsed">
                        </li>
                    </ol>
                </div>
            </div>
            <!-- Template for parent nodes -->
            <script type="text/ng-template" id="parent_nodes_renderer.html">
                <div vs-repeat>
                    <ol ui-tree-nodes="options" ng-model="item.items" ng-class="{hidden: collapsed}" collapsed="true" ng-if="!collapsed">
                        <li ng-repeat="item in item.items" ui-tree-node ng-include="(item.ultimoNivel) ? 'terminal_node_renderer.html' : 'parent_nodes_renderer.html'" collapsed="true" ng-if="!collapsed"> 
                        </li>
                    </ol>
                </div>
            </script>
            <!--The Root Node-->
            <div>
                <div ui-tree id="options" class="ng-scope angular-ui-tree" data-drag-enabled="false" data-max-depth="2">
                    <div vs-repeat>
                        <ol ui-tree-nodes="options" ng-model="data" class="ng-scope ng-pristine ng-valid angular-ui-tree-node" collapsed="true" ng-if="!collapsed">
                            <li ng-repeat="item in data" ui-tree-node ng-include="(item.ultimoNivel) ? 'terminal_node_renderer.html' : 'parent_nodes_renderer.html'"
                                ng-hide="!treeFilter(item, pattern, supportedFields) && !dim"
                                ng-class="{'filtered-out':!treeFilter(item, pattern, supportedFields) && dim}"
                                class="ng-scope angular-ui-tree-node" 
                                collapsed="true"
                                ng-if="!collapsed">
                            </li>
                        </ol>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

  • 和我的控制器:

    "Uncaught TypeError: Cannot read property 'collapse' of undefined". 
    
    function geraArvoreDepartamentos() {
        angular.module('folderApp', ['ui.tree', 'ui.tree-filter', 'ui.highlight'])
        .controller('folderCtrl', function ($scope, $filter) {
    
            $scope.collapsed = false;
    
            var departamentoNomeCampo = 'title';
            var departamentoIdCampo = 'id_depto';
            var departamentosFilhosNomeCampo = 'items';
    
            $scope.treeFilter = $filter('uiTreeFilter');
            $scope.col_defs = [{ field: "id" }]
    
            $scope.toggle = function (scope) {
                $scope.collapsed = !$scope.collapsed;
            };
    
            function getRootNodesScope(rootId) {
                var index = -1;
                for (var i = 0, len = $scope.data.length; i < len; i++) {
                    //if ($scope.data[i].id_depto === rootId) {
                    if ($scope.data[i].id === rootId) {
                        index = i;
                        break;
                    }
                }
    
                return angular.element(document.getElementById("options")).scope().$nodesScope.childNodes()[index];
            }
    
        }).filter('trust', function ($sce) {
            return function (val) {
                return $sce.trustAsHtml(val);
            };
        });
    };
    
    函数geraArvoreDepartamentos(){ angular.module('folderApp',['ui.tree','ui.tree过滤器','ui.highlight'])) .controller('folderCtrl',函数($scope,$filter){ $scope.collapsed=false; var Departmentonomecampo=‘标题’; var departmentoidcampo='id_depto'; var departmentosFilhosnomecampo=‘项目’; $scope.treeFilter=$filter('uiTreeFilter'); $scope.col_defs=[{字段:“id”}] $scope.toggle=函数(范围){ $scope.collapsed=!$scope.collapsed; }; 函数getRootNodeScope(rootId){ var指数=-1; 对于(变量i=0,len=$scope.data.length;i
    如果有人能帮助我,我将不胜感激!

    始终是一个很好的做法-使用或任何其他类似的网站来承载您的问题…尝试删除一些不必要的方法和混乱:)哪一行代码导致了错误?(哪一个“崩溃”实例未定义?)例如,当我以这种方式调用Colapsell angular方法时会发生此错误:“GetRootNodeScope(id).collapseAll();”。仅当我删除模板中的所有ng if=“!collapse”时才会发生此错误。如果我保留一些ng if=“!collapse”出现此错误。始终是一个好的做法-使用或任何其他类似的站点来承载您的问题…尝试删除一些非必要的方法和混乱:)哪行代码导致了此错误?(哪个“collapse”实例未定义?)例如,当我以这种方式调用Colapsell angular方法时,会发生此错误:“GetRootNodeScope(id).collapseAll();”。只有在删除模板中的所有ng if=“!collapse”时才会发生此错误。如果保留一些ng if=“!collapse”,则会发生此错误。