Angularjs Ng在内部多个选项的包装上重复<;选择>;使选项接收空值

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

所以我想要完成的是用递归json填充select元素,如下所示:

[{
  "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>