2014-09-11 2 views
6

Ищу простой способ вернуть массив значений из транспортир-х all.(by.repeater)транспортир возвращение массив значений из повторителя

В принципе, я просто хочу простой способ сделать массив usernames данный ретранслятор как user in users.

Сейчас я строй это так:

allUsers = element.all(by.repeater('user in users').column('user.username')).then(function(array){ 
    var results = [] 
    var elemLength = array.length 
    for(var n = 0; n < elemLength; n++){ 
    array[n].getText().then(function(username){ 
     results.push(username) 
    }) 
    } 
    return results 
}); 
expect(allUsers).toContain(newUser) 

Есть ли более краткий, многоразовый способ сделать это встроенное в транспортир/жасмин, что я просто не могу найти?

ответ

11

AS alecxe сказал, использование карту, чтобы сделать это. Это вернет отложила, который будет решать со значениями в массиве, так что если у вас есть это:

var mappedVals = element.all(by.repeater('user in users').column('user.username')).map(function (elm) { 
    return elm.getText(); 
}); 

Он будет решать, как это:

mappedVals.then(function (textArr) { 
    // textArr will be an actual JS array of the text from each node in your repeater 
}); 
+3

+1 для разработки более на 'карте() '! – alecxe

Смежные вопросы