Html 使用角度的嵌套选项

Html 使用角度的嵌套选项,html,angularjs,Html,Angularjs,首先选择: $scope.senders = {} $scope.senders.list = [{name: NYC, supportedSendingMethods: ['Send by mail', 'Send by sms', 'c']}, {name: GEN, supportedSendingMethods: ['Send by mail','Send by sms','c']}]; $scope.senders.selected = $scope.sende

首先选择:

    $scope.senders = {}
    $scope.senders.list = [{name: NYC, supportedSendingMethods: ['Send by mail', 'Send by sms', 'c']}, {name: GEN, supportedSendingMethods: ['Send by mail','Send by sms','c']}];
    $scope.senders.selected = $scope.senders[0];
    $scope.senders.selectedSending = $scope.senders[0].supportedSendingMethods[0];
<select ng-model="senders.selected" ng-options="sender.name for sender in senders">
</select>
//This one works as expected

//这一个工作正常
支持的发送方式:

    $scope.senders = {}
    $scope.senders.list = [{name: NYC, supportedSendingMethods: ['Send by mail', 'Send by sms', 'c']}, {name: GEN, supportedSendingMethods: ['Send by mail','Send by sms','c']}];
    $scope.senders.selected = $scope.senders[0];
    $scope.senders.selectedSending = $scope.senders[0].supportedSendingMethods[0];
<select ng-model="senders.selected" ng-options="sender.name for sender in senders">
</select>
//This one works as expected

最后一次选择显示所选发件人支持的所有发送方法。问题是,第二个select中的选项本身就是ArrayList

我怎样才能更深一层(使用过滤器)并显示

1) 显示支持的发送方法


2) 所选发件人的名称?

因为您已经将所选发件人存储到
发件人中。所选的
变量为什么不使用它呢?我认为这是最好的选择:

<select ng-model="senders.selectedSending" ng-options="supp.supportedSendingMethods for supp in senders | filter:{name:senders.selected.name} ">
</select>
为了回答最初的问题,我可能会提出两种方法来实现过滤表达式所需的功能。一种方法是只访问过滤集合的第一项-angular.js支持以下表达式:

ng-options="supp for supp in senders.selected.supportedSendingMethods"
另一个选项是为其定义单独的过滤器-它看起来会更好一些:

ng-options="supp for supp in (senders | filter:{name:senders.selected.name})[0].supportedSendingMethods "

您可以在这里看到操作中的所有方法-。

您可以在不使用过滤器的情况下尝试这种方法。第四点是将发送者的型号设置为第二选择列表中的当前发送者:

HTML

ng-options="supp for supp in senders | filter:{name:senders.selected.name} | getFirst:'supportedSendingMethods'"
通过添加
$watch
我们现在可以默认选择第一个值:

var fessmodule = angular.module('myModule', []);

fessmodule.controller('fessCntrl', function ($scope) {
    $scope.senders = {};

    $scope.senders.list = [{
        name: 'NYC',
       supportedSendingMethods: ['Send by mail1', 'Send by sms1', 'c1']
    }, {
        name: 'GEN',
        supportedSendingMethods: ['Send by mail2', 'Send by sms2', 'c2']
    }];

    $scope.senders.currentSender = $scope.senders.list[0];
    $scope.supp = $scope.senders.currentSender.supportedSendingMethods[0];
});
演示