2015-01-30 6 views
1

Я пытаюсь получить элементы в своей DOM и вернуть их как массив. Они вложены. Я хочу транспортир, чтобы вернуть что-то вроде этого:Транспортир: создание массива из вложенных элементов

{ 
category_title: "cat1", 
items: {item_title: "item1"}, {item_title: "item2"} 
}, 
{ 
category_title: "cat2", 
items: {item_title: "item1"}, {item_title: "item2"} 
} 

DOM:

<div ng-repeat="category in categories"> 
    <div id="category-title">{{ category.title }} </div> 
    <div ng-repeat="item in category.items"> 
     <div id="item-title">{{ item.title }} </div> 
    </div> 
</div> 

Это то, что я пытаюсь в транспортир:

return element.all(by.repeater("category in categories")).map(function(elm) { 
    var category_title = elm.element(by.id('category-title')).getText(), 
    var t = { 
       category_title: category_title, 
       dimensions: {} 
      }; 
    // After this part, I'm lost... 
    return elm.all(by.repeater("item in category.items")).map(function(elm) { 
     return { 
       category_title: category_title, 
        dimension: elm.element(by.id('item-title')).getText(), 
       } 
     }); 
}); 

ответ

0

Это похоже на работу, но я м не на 100% уверены, что это правильно

return element.all(by.repeater("category in categories")).map(function(elm) { 
    return { 
       category_title: elm.element(by.id('category-title')).getText(), 
       items: elm.all(by.id("item-title")).getText() 
      } 
}) 
+1

, чтобы получить начальную Поставьте задание, вы замените 'items: elm.all (by.id (" item-title ")). getText()' с 'items: elm.all (by.id (" item-title ")). map (function (elm2) {return {item_title: elm2.getText()}}) ', но ваш ответ верен, только с несоответствием формата – hankduan

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