如何在下拉列表(select
)内获取与所选选项关联的对象?
这是我的HTML:
<select ng-model="selSeason" ng-options="season as season.name for season in seasons"></select>
每个季节都是具有多个属性的对象,我需要获取与所选对象关联的对象(而不仅仅是其文本或值)。
我知道ng-repeat
有类似的东西(选择第五季的名字):
element(by.repeater('season in seasons').row(4).column('name'));
by.options()
选择器是否有类似内容?
由于
答案 0 :(得分:3)
您可以by.options
使用evaluate()
:
var seasonNames = element.all(by.options('season in seasons')).evaluate("season.name");
seasonNames.then(function (values) {
console.log(values); // array of season names is printed
});
您还可以使用filter()
过滤掉所选选项:
var selectedSeasonName = element.all(by.options('season in seasons')).filter(function (option) {
return option.getAttribute("selected").then(function (selected) {
return selected;
});
}).first().evaluate("season.name");
selectedSeasonName.then(function (value) {
console.log(value); // selected season name is printed
});
答案 1 :(得分:1)
您正在寻找的是自定义by.selectedOption定位器。
unzip some-zip.zip
要获得更好的说明,请阅读:https://technpol.wordpress.com/2013/12/01/protractor-and-dropdowns-validation/
答案 2 :(得分:0)
您的绑定看起来不错,您可以使用ng-model变量轻松阅读所有属性&#39; selSeason&#39;,请参阅此示例
<select ng-model="user"
ng-options="x as x.name for x in users track by x.id"
class="form-control"
ng-required="true">
<option value="">-- Choose User --</option>
</select>
var id = $scope.user.id;
var name = $scope.user.name;
var role = $scope.user.role
详细信息check this