транспортир, как обновить значение в forloop условие javascript - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть всплывающее окно фильтра на странице. Я пытаюсь перебрать переключатели во всплывающем окне фильтра, впервые я могу прочитать количество переключателей. После выбора определенного параметра радио тогда будут отображаться новые переключатели, и теперь счет должен быть больше, чем предыдущий счет. Я пытаюсь прочитать новые значения, но не могу присвоить их переменной в цикле for (totalradios)

 var value;
 filterButton.click().then(function () {
  filteroptions.count().then(function (totalradios) {
    for (var i = 0; i < totalradios; i++) {
      (function (index) {
        filteroptions.get(index).click();
        filterSubmit.click();  //page refreshed with new results
        filterButton.click();   //reopened the filter pop-up
        getfiltercount().then(function (value) {

        })
        console.log("recalulated totalradios" + value);
        totalradios = result.filteroptions;
      })(i);
    }
  });
})

в новой функции я пытаюсь подтвердить радио кнопки и вернуть его на вызов

var getfiltercount = function () {
filteroptions = element.all(by.css("md-radio-group.ng-pristine.ng-untouched.ng-valid._md.layout-row.ng-not-empty md-radio-button")); // filtertext
  return filteroptions.count().then(function (addradios) {
  console.log("addradios is " + addradios);
  })
return addradios;
// done();
}

Но когда я пытаюсь распечатать консоль, я получаю неопределенное значение на

console.log("recalulated totalradios" + value)

Все, что мне нужно, мне нужно обновить значение totalradios новым списком элементов на странице

filter pop-up with radio button No selected

filter pop-up with radio button Yes selected

1 Ответ

0 голосов
/ 26 апреля 2018

возвращаем значение для разрешения обещания

Давайте пройдемся и обсудим, где что-то происходит, не установлено.При возврате счетчика фильтра get, filteroptions.count возвращает число.Вы звоните then для консольного журнала на сумму addradios.Ваш возвращаемый тип этого метода недействителен.Таким образом, результатом следующего является обещание для типа void.

return filteroptions.count().then(function (addradios) {
  console.log("addradios is " + addradios);
}

Другие проблемы, у нас есть переменная области действия для addradios, и вы возвращаете ее в конце.Я не думаю, что это сработает.Итак, как мы можем переписать это?

let filterOptions = element.all(by.css("md-radio-group.ng-pristine.ng-untouched.ng-valid._md.layout-row.ng-not-empty md-radio-button")); // filtertext
getFilterCount = () => {
  return filterOptions.count().then(count => {
    console.log("number of addradios: " + count);
    return count;
  });
}

Цикл по element.all

Я не использовал getFilterCount в ударе фрагмента.Далее цикл по element.all:

filterButton.click().then(() => {
  // assuming that options is constant even after a page refresh
  return filterOptions.forEach(filterOption => {
    return filterOption.click().then(() => {
      return filterSubmit.click().then(() => {
        return filterButton.click();
      });
    });
  });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...