-2
我試圖完成模式的任務,但它不起作用。我需要通過這個任務,這裏是我得到的,任務如下。如果有人能幫助我,我將不勝感激。MVC JavaScript模式
window.onload = function() {
//--------MODEL---------------
//*
function Model(option) {
\t this.name = option.name;
\t this.age = option.age;
\t this.year = option.year;
\t this.examsTaken = option.examsTaken;
};
Model.prototype = {
\t constructor: Model,
\t takeExam:function(){
\t \t this.examsTaken++;
\t \t this.changed = true;
\t }
}
// -----CONTROLLER -------------
//*
function Controller(action){
\t this.model = action.model;
\t this.elementId = action.elementId;
};
Controller.prototype = {
\t constructor: Controller,
\t render: function(){
\t \t return '<span>' + this.model.name + '</span><button id="student-exams-button">Increase exams taken</button>';
\t },
\t clickHandlers: {
\t \t '#student-exams-button': 'updateExams'
\t },
\t updateExams: function(){
\t \t this.model.takeExam();
\t }
};
//--------VIEW------------
function View() {
\t document.getElementById(StudentController.elementId).innerHTML = StudentController.render();
}
//---INFORMATION ---
var Student = new Model({
\t name: 'Piotr',
\t age: 22,
\t year: 5,
\t examsTaken: 2,
});
var StudentController = new Controller({
\t model: Student,
\t elementId: 'student-container'
});
View();
//test
console.log(StudentController.render());
Student.takeExam();
StudentController.updateExams()
console.log(Student.examsTaken);
StudentController.updateExams()
console.log(Student.examsTaken);
}
,任務...
落實執行實體模型和控制器/演示模式MVC/MVP。視圖以html的形式呈現。 模型保留數據和處理方法,Controller - 處理來自用戶的事件並呈現視圖。 因此,如下面的代碼的結果,應該按預期工作:
var Student = new Model({
name: 'Piotr',
age: 22,
year: 5,
examsTaken: 2,
takeExam: function(){
this.examsTaken++;
this.changed = true;
}
});
var StudentController = new Controller({
model: Student,
elementId: 'student-container',
render: function(){
return '<span>' + this.model.name + '</span><button id="student-exams-button">Increase exams taken</button>';
},
clickHandlers: {
'#student-exams-button': 'updateExams'
},
updateExams: function(){
this.model.takeExam();
}
});
因此,模型不具有任何特殊的邏輯本質上是一個單純的對象。控制器還會將結果插入呈現器 功能找到的元素,其id爲屬性elementId。渲染器在Controller中被調用。還有必要實現Controller的方法的實質,它將每隔100ms檢查一次this.model.changed,如果爲true,則調用render方法, 已更改並返回false。 (這是一個非常可惡的做法,但對你理解下一步會發生什麼很有用)對象的值 是方法clickHandlers控制器,當用戶點擊元素鍵到當前值時將調用該控制器
這看起來像你的家庭作業的一個很好的書面記錄,但_「這不作品」 _不是你的問題的一個很好的書面記錄......在哪裏具體是你卡住了嗎?我們不會在StackOverlflow上爲您做功課,但是我們會幫助您回答一個特定的問題,讓您堅持做自己的功課。 –
這看起來像你的整個任務,我們不會爲你解決這個問題。畢竟,它存在以至於你應該學習。如果您遇到MVC問題,請閱讀它。如果您遇到特定問題,請發佈該問題。 – Jan