我對Web開發相對熟悉,並且我被分配到了最近開始的一個Web項目。爲了把你放在palce,我使用webpack綁定我的javascript + html + css文件,並且我想遵循MVC。MVC - 將數據從視圖傳遞到控制器
我的問題出現在登錄開始時,並且正如我剛開始的項目,我不介意在需要時更改結構。
問題是我有一個main.js,它需要loginController.js來呈現loginView.js,這是一個基本的登錄窗體,因此loginController需要loginView,但是當用戶單擊提交按鈕時,哪個函數是loginView,我需要以某種方式告訴loginController訪問loginModel的數據並返回它。所以我的loginController需要loginView,而我的loginView需要loginController,我相信這會導致循環依賴,無論哪種方式,webpack似乎都無法正確編譯我的代碼。
顯然我做錯了什麼,也許結構自開始或一些明顯的代碼被放置在它不應該的地方。我搜索了幾天,閱讀了更多有關MVC,閱讀了一堆問題,但我找不到答案,也許我是盲目的。
我該如何解決這個問題?控制器需要知道按下提交按鈕的時間,但該功能在視圖中,但視圖需要連接控制器以向模型請求數據並將其返回。
任何幫助或指導將不勝感激。
loginController.js
var loginViewAux = require('./loginView.js');
var loginModelAux = require('./loginModel.js');
var LoginView, LoginModel;
LoginController = function() {
LoginView = new loginViewAux();
LoginModel = new loginModelAux();
}
LoginController.prototype.render = function() {
LoginView.render();
};
LoginController.prototype.setEvents = function() {
LoginView.setEvents();
}
LoginController.prototype.login = function(username, password) {
return LoginModel.loginPost(username, password);
};
module.exports = LoginController;
loginView.js
require('./login.css');
var loginTemplate = require('./loginTemplate.html');
var logo = require('./../img/ttlvd-color-alborde.png');
var LoginController = require('./loginController.js');
LoginView = function() {}
LoginView.prototype.render = function() {
$('#loginContainer').html(loginTemplate);
$('#loginLogo').attr("src", logo);
}
LoginView.prototype.setEvents = function() {
$('#btnSubmit').on('click', function(e) {
var username, password;
e.preventDefault();
username = $('#loginFormUsername').html();
password = $('#loginFormPassword').html();
var result = LoginController.login(username, password);
console.log(result);
});
}
module.exports = LoginView;
更多信息:
一個main.js負載的LoginController
main.js
require('./style.css');
var loginControllerAux = require('./app/login/loginController.js');
var LoginController = new loginControllerAux();
LoginController.setEvents();
LoginController.render();
你是否忘記將用戶名和密碼傳遞到LoginController.login()函數? – Katalyst
我很抱歉,但只是一個錯字,問題仍然存在,謝謝:) – Mese