【发布时间】:2024-01-19 16:55:01
【问题描述】:
情况:
我正在 AngularJs 中创建一个分配权限的应用程序。 为了做到这一点,我有三个嵌套的 ng-repeat。
第一个循环:显示PERMISSION GROUP
第二次循环:为每个权限组显示 CATEGORIES。 在此循环中执行一个函数,该函数将获取每个类别的所有 SUB CATEGORIES
第三次循环:显示子类别
问题:
问题在于第二个循环内函数的执行。
尝试 1 - ng-init:
<div class="row" ng-repeat="permission_group in list_permission_groups">
<div class="col-sm-3">
<h3>
{{permission_group.permission_group_name}}
</h3>
</div>
<div class="col-sm-9">
<ul>
<li ng-repeat="category in list_categories">
<span>
{{ category.name }}
</span>
<div class="checkbox">
<label>
<div ng-init="temp_result = get_Sub_Categories(category.category_id)">
<p ng-repeat="sub_category in temp_result">
{{ sub_category.name }}
</p>
</div>
</label>
</div>
</li>
</ul>
</div>
</div>
在控制器中:
$scope.get_Sub_Categories = function(category_id) {
$http({
url: base_url + 'main/json_get_list_sub_categories',
data: {
category_id: category_id
},
method: "POST"
}).success(function(data) {
return data;
});
}
他的行为很奇怪。可能是由于脏检查页面加载了 682 次。 不显示结果。
ATTEMPT 2 - ng-click:(仅用于调试)
<div class="row" ng-repeat="permission_group in list_permission_groups">
<div class="col-sm-3">
<h3>
{{permission_group.permission_group_name}}
</h3>
</div>
<div class="col-sm-9">
<ul>
<li ng-repeat="category in list_categories">
<span>
{{ category.name }}
</span>
<div class="checkbox">
<label>
<button ng-click="get_Sub_Categories(category.category_id)">
GET SUB-CATEGORIES
</button>
{{ list_sub_categories }}
</label>
</div>
</li>
</ul>
</div>
</div>
在控制器中:
$scope.get_Sub_Categories = function(category_id) {
$http({
url: base_url + 'main/json_get_list_sub_categories',
data: {
category_id: category_id
},
method: "POST"
}).success(function(data) {
$scope.list_sub_categories = data;
});
}
这次页面只加载一次。 如果我按下按钮,则会显示正确的子类别,但当然不仅针对相应类别,而且针对所有类别,因为我正在修改全局范围内的 var。
目标:
我想要获得的只是显示每个类别的所有正确子类别。 无需使用按钮,只需在页面加载后立即查看所有正确的内容。 但我不明白如何在 AngularJs 中正确完成。
问题:
如何在 ng-repeat 中正确执行一个函数,为每个循环返回并显示不同的数据?
编辑 - 一个类别的子类别示例转储:
[{
"sub_category_id": "1",
"name": "SUB_CATEGORY_1",
"category_id_parent": "1",
"status": "VISIBLE"
}, {
"sub_category_id": "2",
"name": "SUB_CATEGORY_2",
"category_id_parent": "1",
"status": "VISIBLE"
}, {
"sub_category_id": "3",
"name": "SUB_CATEGORY_3",
"category_id_parent": "1",
"status": "VISIBLE"
}, {
"sub_category_id": "4",
"name": "SUB_CATEGORY_4",
"category_id_parent": "1",
"status": "VISIBLE"
}]
【问题讨论】:
-
您可以发布您要显示的数据的转储吗?这个想法很明确,尽管没有看到输入数据很难提出建议。
-
好的,谢谢。我已添加编辑问题。
-
好的,我不够清楚,抱歉。您能否添加所有输入数据的简短转储?这包括
list_permission_groups以及这些值与list_categories的关系。 -
@johnnyfittizio 非常好的问题,它解释得很好,并且有一些 badda boo badda 蜜蜂。很好!
-
你可以缩短你的问题
标签: javascript php angularjs angularjs-ng-repeat