2015-09-08 32 views
3

如何在下拉菜單中獲取與所選選項關聯的對象(select)?使用量角器在ngOptions中獲取選定選項

這裏是我的html:

<select ng-model="selSeason" ng-options="season as season.name for season in seasons"></select> 

每個季節都具有多個屬性的對象,我需要得到有關所選對象(而不僅是它的文本或值)的對象。

我知道ng-repeat有類似的信息(選擇第5個賽季的名稱):

element(by.repeater('season in seasons').row(4).column('name')); 

是否有by.options()選擇類似的東西?

感謝

回答

0

你結合看起來不錯,你可以用你的NG-模型變量 'selSeason' 輕鬆讀取所有屬性,看到這個例子

<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

+2

您的解決方案無關與量角器。 –

+0

只需測試一遍,再說一遍,就會返回整個對象,我已經測試過了。 :) –

3

您可以使用by.optionsevaluate()

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 
}); 
+0

這實際上很不錯,但並沒有顯示如何獲得選定的選項。這樣做,你有我的投票。 – MBielski

+0

@MBielski謝謝,我認爲更新應該解決它。 – alecxe

+0

釘住它。我忘記了使用過濾器。 – MBielski

0

我結束了評估uating沒有選擇的選擇,但關聯到選擇的NG-型號:

HTML

<select ng-model="selSeason" ng-options="season as season.name for season in seasons"></select> 

JS

element(by.model('selSeason')).evaluate('selSeason').then(function(season){ 
    console.log(season.name); 
});