-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathNoteView.js
More file actions
51 lines (47 loc) · 1.9 KB
/
NoteView.js
File metadata and controls
51 lines (47 loc) · 1.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
export default class NoteView{
constructor(controller, model){
this.controller = controller;
this.element = this.createElement(model);
this.registerEventListeners()
}
registerEventListeners(){
this.element.getElementsByTagName('a')[0]
.addEventListener('click', this.controller.handleSave.bind(this.controller));
this.element.getElementsByTagName('a')[1]
.addEventListener('click', this.controller.handleClear.bind(this.controller));
}
update(model){
this.element.innerHTML = this.render(model);
this.registerEventListeners();
}
createElement(model){
return document.createRange().createContextualFragment(this.render(model)).firstChild;
}
render(model){
return `
<div class="row">
<div class="col s12 m6">
<div class="card blue-grey darken-1">
<div class="card-content white-text">
<span class="card-title">
<input placeholder="Title" id="note_title" type="text" class="white-text validate"
value="${model.title}">
</span>
<textarea id="note_content"
class="white-text materialize-textarea">${model.content}</textarea>
</div>
<div class="card-action">
<a class="waves-effect waves-light btn">
<i class="material-icons left">save</i>
Save
</a>
<a class="waves-effect waves-light btn">
<i class="material-icons left">delete</i>
Clear
</a>
</div>
</div>
</div>
</div>`.trim();
}
}