остановить IIFE от выполнения, если возникает условие - PullRequest
1 голос
/ 15 мая 2019

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

, поэтому я попытался использовать ключевое слово return, чтобы приложение не продолжало работать, но это не сработало, поэтому вот мой код:

JavaScript:

var internalController = (function(UICtrl) { 
  var Plan = function(id, from, to, text, goingToCkecked) {
    this.id = id;
    this.from = from;
    this.to = to;
    this.text = text;
    this.goingToCkecked = goingToCkecked;
  };

  var data = {
    Monday: [],
    Tuesday: [],
    Wednesday: [],
    Thursday: [],
    Friday: [],
    Saturday: [],
    Sunday: []
  };

  //the array of the from inputs
  var fromT = [];

  //the array of the to inputs
  var toT = [];

  var Dom = UICtrl.getDOMstrings();

  function removeError(x, y) {
    document.querySelector(x).style.visibility = "hidden";
    document.querySelector(y).classList.remove("error-red");
  }

  function showER() {
    document.querySelector(Dom.errorCase).style.visibility = "visible";
    document.getElementsByClassName(Dom.errorDes)[0].innerHTML = "the \" From time \" is already chosen";
    document.querySelector(Dom.inputTimeF).classList.add("error-red");
  }

  var exit;

  return {
      refuseDuplicatedPlans: function(from, to) {
        var exit;
        if (fromT.indexOf(from) === -1) {
          fromT.push(from);
          exit = false;
        } else {
          console.log('value already exist');
          showER();
          exit = true;
        }
    }
  };
})(UIController);


  var controller = (function(interCtrl, UICtrl) {
    var input, newPlan, DOM;

    DOM = UICtrl.getDOMstrings();

      function setupEventListeners() {
        document.querySelector(DOM.inputBtn).addEventListener("click", ctrlAddPlans);

        document.addEventListener("keypress", function(e) {
          if (e.keyCode === 13) {
            document.activeElement.blur();
            ctrlAddPlans();
          }
        });
      }

      function removeFocus() {
        console.log('remove Focus got trigered');

        document.querySelector(DOM.inputTimeF, DOM.inputTimeT, DOM.inputText).addEventListener("focus", function() {
          // document.activeElement.blur();
          console.log("hello world");
        });
      }

      var ctrlAddPlans = function() {
        //3.get the filed input data
        input = UICtrl.getInput();
        console.log(input);
        // 4.Refuse duplicated plans
        interCtrl.refuseDuplicatedPlans(input.inputTimeF, input.inputTimeT);
        //5.add the plan to the internalController
        newPlan = interCtrl.addItem(input.inputDay, input.inputTimeF, input.inputTimeT, input.inputText, input.goingToCkecked);
        //6.add the plan to the UI
        UICtrl.addPlanList(newPlan, input.inputDay);
        //7.clear the fields;
        interCtrl.clearFields(UICtrl.getDOMstrings().inputTimeF, UICtrl.getDOMstrings().inputTimeT, UICtrl.getDOMstrings().inputText);
      };

      return {
        init: function() {
          console.log('the app has started');
          setupEventListeners();
        },
      };
    })(internalController, UIController);

controller.init();

Я хочу, чтобы после модуля refuseDuplicatedPlans() было короткое замыкание в модуле контроллера, если, конечно, он возвращает true, я хочу, чтобы модуль прекратил свое выполнение, и заранее спасибо, ребята.

1 Ответ

1 голос
/ 15 мая 2019

Ваш метод отказаться от дубликатов () ничего не возвращает прямо сейчас. Пожалуйста, добавьте к нему заявление о возврате как

refuseDuplicatedPlans: function(from, to) {

        var exit;
              if (fromT.indexOf(from) === -1) {
                fromT.push(from);
                exit=false;
              } else {
                console.log('value already exist');
                showER();
                exit=true;
              }
        return exit;
            }

После этого вы можете поставить свой вызов if else и остановить выполнение, если true.

if(interCtrl.refuseDuplicatedPlans(input.inputTimeF, input.inputTimeT)){
   reutrn;
}
...