Uncaught TypeError: UICtrl.getDOMstrings не является функцией - PullRequest
0 голосов
/ 24 июня 2018
var budgetController = (function() {


})();

//UI CONTROLLER
var UIController = (function () {

    var DOMstrings = {
        //so i won't have to change '.add__type' for example everywhere in the code if i decide to modify my html
        inputType: '.add__type',
        inputDescription: '.add__description',
        inputValue: '.add__value',
        inputBtn: '.add__btn'

    };

    return {
      getInput: function(){
          return {
              type: document.querySelector(DOMstrings.inputType).value,//will be wither inc or exp
              description: document.querySelector(DOMstrings.inputDescription).value,
              value: document.querySelector(DOMstrings.inputValue).value
          };

      },
        getDomstrings: function() {
            //exposing the domstring object to the public
            return DOMstrings;
        }
    };

})();


//GLOBAL APP CONTROLLER
var controller = (function(budgetCtrl,UICtrl) {

    var DOM = UICtrl.getDOMstrings();

    var ctrlAddItem = function () {

        //1. get the field input data
        var input = UICtrl.getInput();
        console.log(input);

        //2.Add the item to the budget controller

        //3.Add the item to the UI

        //4. Calculate the budget

        //5. Display the budget on the UI


    }

    document.querySelector(DOM.inputBtn).addEventListener('click',ctrlAddItem);

    document.addEventListener('keypress', function(event) {
        // enter has that key code(13)
        if (event.keyCode === 13 || event.which === 13) {
            ctrlAddItem();
        }

    });

})(budgetController,UIController);

Точная ошибка, которую я получаю в консоли:

app.js:39 Uncaught TypeError: UICtrl.getDOMstrings is not a function
    at app.js:39
    at app.js:68
(anonymous) @ app.js:39
(anonymous) @ app.js:68

Активно изучает javascript и застрял на этой ошибке, которая не имеет смысла, поскольку .getDomstrings() является функцией, определенной выше, и public, поэтому должен иметь к ней доступ. И нет необходимости добавлять html, вероятно, но, если будет любезно, дайте мне знать в комментариях.

1 Ответ

0 голосов
/ 24 июня 2018

Javascript - это регистрозависимый язык, при использовании которого вы должны использовать одно и то же имя ключевых слов, функций, переменных и т. Д.

, поэтому ваша функция getDomstrings недопустима при вызове как getDOMstrings.

Вы должны вызвать функцию как getDomstrings или изменить имя функции на getDOMstrings, затем вы можете вызвать как getDOMstrings.

, поэтому ваш следующий код:

var DOM = UICtrl.getDOMstrings();

должно быть:

var DOM = UICtrl.getDomstrings();

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...