Angularjs Ng在内部多个选项的包装上重复<;选择>;使选项接收空值
所以我想要完成的是用递归json填充select元素,如下所示:Angularjs Ng在内部多个选项的包装上重复<;选择>;使选项接收空值,angularjs,angularjs-directive,angularjs-ng-repeat,ng-options,Angularjs,Angularjs Directive,Angularjs Ng Repeat,Ng Options,所以我想要完成的是用递归json填充select元素,如下所示: [{ "siteId": 1, "name": "Test 1", "siteTypeId": 2, "childSites": [ { "siteId": 3, "name": "Test 3", "siteTypeId": 2, "childSites": [ { "siteId": 2, "name
[{
"siteId": 1,
"name": "Test 1",
"siteTypeId": 2,
"childSites": [
{
"siteId": 3,
"name": "Test 3",
"siteTypeId": 2,
"childSites": [
{
"siteId": 2,
"name": "Test 2",
"siteTypeId": 2,
"childSites": []
}
]
},
{
"siteId": 4,
"name": "Test 4",
"siteTypeId": 2,
"childSites": []
}
]
}]
我找到了两种方法来实现这一点,要么将结构化对象转换为平面数组,然后使用ngOptions,要么使用以下代码(其中包括使用自定义模板的ng repeat)
{{item.name}
但当我使用上面提供的json运行它时,结果是一个空的select,有人能解释为什么会发生这种情况吗?我想正确的解决方案是将结构化对象展平,但我很好奇
似乎在select标记内的元素上应用ng repeat,元素的子元素将不会收到该值(当我移除select标记时,它工作了,移除包装器并直接在option元素上应用ng repeat,没有模板),这是为什么
谢谢。为了澄清,您是说ng repeat on a select会给您一个空白选项?还是空白选项是数组中的一个元素已经被去掉了?抱歉我的坏,它产生了一个空的选择(根本没有元素)。尝试一些类似的东西:基本上,不要在DIV上使用NG重复,在选择上使用NG选项。如果你需要在选择中嵌套,因为这样的原因,使用选项,不是div。还有一件事我想会有帮助,你能从select列表复制生成的html并把它放到你的问题中吗?
<script type="text/ng-template" id="sites-template">
<!--The object itself-->
<option>{{item.name}}</option>
<!--child items (if any), recursive call -->
<div ng-if="item.childSites && item.childSites.length > 0"
ng-repeat="item in item.childSites"
ng-include="sites-template">
</div>
</script>
<select class="selectpicker" data-live-search="true">
<div ng-repeat="site in sites" ng-include="sites-template"></div>
</select>