2014-09-11 21 views
6

Tôi đang tìm kiếm một cách dễ dàng để trả về một mảng các giá trị từ thước đo của all.(by.repeater)thước đo lợi nhuận mảng các giá trị từ repeater

Về cơ bản, tôi chỉ muốn một cách dễ dàng để thực hiện một loạt các usernames cho một repeater như user in users.

Ngay bây giờ tôi đang xây dựng nó như thế này:

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) 

Có một cách ngắn gọn hơn thể tái sử dụng để làm điều này được xây dựng vào thước đo/hoa nhài mà tôi chỉ không thể tìm thấy?

Trả lời

11

AS alecxe nói, sử dụng bản đồ để làm điều này. Điều này sẽ trả về một chậm mà sẽ giải quyết với các giá trị trong một mảng, vì vậy nếu bạn có điều này:

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

Nó sẽ giải quyết như thế này:

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

+1 cho xây dựng thêm về 'bản đồ() '! – alecxe

Các vấn đề liên quan