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];
});
演示