Angularjs 如何在Angular中设置级联下拉列表?

Angularjs 如何在Angular中设置级联下拉列表?,angularjs,drop-down-menu,ng-options,Angularjs,Drop Down Menu,Ng Options,我有一个带一些选项的角度下拉列表。假设我们有一个下拉列表 [名单] A. B C D E F 如果您选择了,您将看到另一个下拉列表,其中包含: [名单] A-1 A-2 A-3 A-4 还有B [名单] B-1 B-2 因此,第二个列表取决于您在第一个列表中选择的内容。到目前为止,我得到了这个 Html 问题是我不能使用第一个列表中的绑定变量。。实现这一点的最佳方法是什么。这实际上取决于您的数据结构以及如何检索它。我模拟了一个使用嵌套结构的示例,如下所示: $scope.list = [

我有一个带一些选项的角度下拉列表。假设我们有一个下拉列表

[名单] A. B C D E F

如果您选择了,您将看到另一个下拉列表,其中包含: [名单] A-1 A-2 A-3 A-4

还有B [名单] B-1 B-2 因此,第二个列表取决于您在第一个列表中选择的内容。到目前为止,我得到了这个

Html
问题是我不能使用第一个列表中的绑定变量。。实现这一点的最佳方法是什么。

这实际上取决于您的数据结构以及如何检索它。我模拟了一个使用嵌套结构的示例,如下所示:

$scope.list = [
    {
        name:'A',
        items: [
            'A-1',
            'A-2',
            'A-3',
            'A-4'
        ]
    }, {
        name: 'B',
        items: [
            'B-1',
            'B-2'
        ]
    }, {
        name: 'C'
    }
];
下面是一个活生生的例子:

看看你是否可以使用它,也许你需要调整你的数据结构。如果这是不可能的,发布您的数据结构,我们也许能够找到解决方案

使现代化 试试这个例子,看看它是否适合你的需要:

它遍历项目列表,并将项目中的所有任务嵌套在任务数组中

[{
  "projectId":1,
  "title":"someTitle",
  "user":"mike",
  "tasks":[
    {"taskId":1,"name":"Sales"},
    {"taskId":3,"name":"Support"}
  ]
},
...
]
我希望这就是你们正在寻找的解决方案


有一个定义的过滤器,可以保持事物整洁。不幸的是,它与项目对象结构紧密相连。如果id字段名“projectId”发生更改,您也需要更改筛选器,但这是我一直在努力解决的一个问题。

这实际上取决于您的数据结构和检索方式。我模拟了一个使用嵌套结构的示例,如下所示:

$scope.list = [
    {
        name:'A',
        items: [
            'A-1',
            'A-2',
            'A-3',
            'A-4'
        ]
    }, {
        name: 'B',
        items: [
            'B-1',
            'B-2'
        ]
    }, {
        name: 'C'
    }
];
下面是一个活生生的例子:

看看你是否可以使用它,也许你需要调整你的数据结构。如果这是不可能的,发布您的数据结构,我们也许能够找到解决方案

使现代化 试试这个例子,看看它是否适合你的需要:

它遍历项目列表,并将项目中的所有任务嵌套在任务数组中

[{
  "projectId":1,
  "title":"someTitle",
  "user":"mike",
  "tasks":[
    {"taskId":1,"name":"Sales"},
    {"taskId":3,"name":"Support"}
  ]
},
...
]
我希望这就是你们正在寻找的解决方案


有一个定义的过滤器,可以保持事物整洁。不幸的是,它与项目对象结构紧密相连。如果id字段名'projectId'发生更改,您也需要更改筛选器,但这是我一直在努力解决的问题。

因此我得到了答案。我以为我知道答案,但我不知道。。我做的每件事都是一样的,这次成功了。。多亏了你,我创建了我的下拉列表。我用“myProject.title”过滤了这些项目,但没有效果。所以我输出了“我的项目”,它给了我这个信息

{projectId:1056,title:someTitle,用户:mike,taskId:3,name:Design}

所以当我把它拿回来时,我想我用整个json文件过滤了它。但事实并非如此。。但后来我将select输入更改为ng change,并调用了一个函数->selectedProjectmyProject。在这个函数中,我得到了项目的标题,并将其返回。在我的第二个下拉列表中,我将其更改为“filter:selectedProject”,它突然起了作用。。我就像是,嗯?所以我想如果我们只是用第一个的输入过滤下拉列表会更快。所以我用myProject.title对它进行了过滤,它也起了作用。。所以我仍然不知道答案,但这是我现在的代码。控制器代码只是一些$http.post函数

HTML文件
所以我得到了答案。我以为我知道答案,但我不知道。。我做的每件事都是一样的,这次成功了。。多亏了你,我创建了我的下拉列表。我用“myProject.title”过滤了这些项目,但没有效果。所以我输出了“我的项目”,它给了我这个信息

{projectId:1056,title:someTitle,用户:mike,taskId:3,name:Design}

所以当我把它拿回来时,我想我用整个json文件过滤了它。但事实并非如此。。但后来我将select输入更改为ng change,并调用了一个函数->selectedProjectmyProject。在这个函数中,我得到了项目的标题,并将其返回。在我的第二个下拉列表中,我将其更改为“filter:selectedProject”,它突然起了作用。。我就像是,嗯?所以我想如果我们只是用第一个的输入过滤下拉列表会更快。所以我用myProject.title对它进行了过滤,它也起了作用。。所以我仍然不知道答案,但这是我现在的代码。控制器代码只是一些$http.post函数

HTML文件
是的,这正是我的意思。唯一的事情就是你说的关于我的数据结构的事情。我通过一个到我的php的帖子获取数据,然后返回JSON数据。数据看起来像这样。{projectId:1,title:someTitle,user:mike,taskId:1,name:Sales},{projectId:1,title:someTitle,user:mike,taskId:3,name:Support},{projectId:1,title:someTitle,title:4,name:Finance},{projectId:1,title,user:mike,taskId:1,name:Sales}。我想有一个projectId=1的下拉菜单,第二个下拉菜单有不同的taskId'sQuite困难,目前我想不出更好的方法,但显示两个下拉菜单,其中包含所有项目ID和任务ID:。这个解决方案不起作用
t根据项目id筛选任务id。也许重构数据是更好的方法。嗯,也许我应该更改数据的结构。。但不知道用什么方式。。无论如何,谢谢你试着帮助我!这是我能想出的最好办法:如果我找到解决办法,我会再打给你的。是的,谢谢你。哦,我刚试过过滤器。过滤器:myProject.title,我将select的ng模型更改为myProject.title。它现在只显示了我的一个选项。所以我必须循环它或者其他什么是的,这正是我的意思。唯一的事情就是你说的关于我的数据结构的事情。我通过一个到我的php的帖子获取数据,然后返回JSON数据。数据看起来像这样。{projectId:1,title:someTitle,user:mike,taskId:1,name:Sales},{projectId:1,title:someTitle,user:mike,taskId:3,name:Support},{projectId:1,title:someTitle,title:4,name:Finance},{projectId:1,title,user:mike,taskId:1,name:Sales}。我想有一个projectId=1的下拉菜单,第二个下拉菜单有不同的taskId'sQuite困难,目前我想不出更好的方法,但显示两个下拉菜单,其中包含所有项目ID和任务ID:。此解决方案不会按项目id筛选任务id。也许重构数据是更好的方法。嗯,也许我应该更改数据的结构。。但不知道用什么方式。。无论如何,谢谢你试着帮助我!这是我能想出的最好办法:如果我找到解决办法,我会再打给你的。是的,谢谢你。哦,我刚试过过滤器。过滤器:myProject.title,我将select的ng模型更改为myProject.title。它现在只显示了我的一个选项。所以我必须循环一下,这是一个很好的解决方案。我没有注意到你已经有了独特的过滤器,所以你可能会使用angular ui或类似的自定义过滤器。我同意你接受你的答案作为解决方案;哈哈,是的。我有一些具有不同taskId的多个信息,因此我使用唯一筛选器删除重复项。无论如何。。谢谢你的帮助这是一个很好的解决方案。我没有注意到你已经有了独特的过滤器,所以你可能会使用angular ui或类似的自定义过滤器。我同意你接受你的答案作为解决方案;哈哈,是的。我有一些具有不同taskId的多个信息,因此我使用唯一筛选器删除重复项。无论如何。。谢谢你的帮助