Javascript 使用ng if=";时,折叠/折叠密封不起作用;!“崩溃”;
由于加载了大量记录,我的树出现了性能问题,我必须使用ng if=“!collpsed”来解决这个性能问题。但是,有了它,collapseAll或collapseAll函数就不再工作了。当我在控制器中使用它们时,总是会出现相同的错误: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
"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”,则会发生此错误。