Want to see the full-length video right now for free?
Since we've gone through all this trouble to never actually leave the page, why are we going through even more trouble to make it look like we are?
First let's make things look more appropriate.
We'll start by creating a style sheet at app/assets/stylesheets/notes.css.scss
Add a definition for the note class
.note { width: 225px; heigth: 225px; margin: 20px; float: left;
border: 1px solid black; padding: 10px;
list-style: none; }
Next remove all the content from the show.jst.eco template
title-containerEnsure the existing classes remain on both input elements
Now we return to our new style sheet
Add a definition for the title container class under the note
.title-container { height: 25px;
margin-bottom: 10px;
border-bottom: 1px solid black;
.note-title {
font-size: 17px;
font-weight: bold;
}
}
Remove background and border for both inputs within a note
Also remove outline on :focus
input[type=text], textarea {
border: none;
background: none;
&:focus {
outline: none;
}
}
Add a definition for the body
Add a definition for title-content
.body {
width: 100%;
height: 165px;
.note-content {
width: 100%;
height: 100%;
resize: none;
}
Open the ShowNote Backbone view
save method, which grabs the title and body from the input
elementsBind a change event with no target to that method
class App.Views.ShowNote extends Backbone.View template: JST['notes/show']
className: 'note'
events: 'change': 'save'
render: -> @$el.html(@template(note: @model)) this
save: -> @model.set title: @$('.note-title').val() content: @$('.note-content').val() @model.save() false
Title is a single line so it should save and blur when enter is pressed
Create a method called blurIfEnter and bind it to the keydown event
events:
'change': 'save'
'keydown .note-title': 'blurIfEnter'
keyCode 13 means the enter button was pressed
blurIfEnter: (e) -> if e.keyCode == 13 @$(':input').blur()
To improve user experience let's make it clear what is being edited
On focus of both of our note inputs bind an event called beginEditing
On blur of both of our note inputs bind an event called endEditing
events: 'change': 'save' 'keydown .note-title': 'blurIfEnter' 'focus .note-title, .note-content': 'beginEditing' 'blur .note-title, .note-content': 'endEditing'
Add the begingEditing method
Add a class called editing to the input that comes in focus
beginEditing: -> @$el.addClass('editing')
Add the endEditing method
Remove the class called editing from the input that goes out of focus
endEditing: -> @$el.removeClass('editing')
Open the show.jst.ceo file
Add a save button with a class of save
Open the notes.css.scss file
Add a blue border to the note when the editing class is present
.footer { display: none; }
&.editing { border-color: blue;
.footer { display: block; } }
Because of our recent change we can remove the following files and code:
We also need to change the initialize method in our ScratchPad class to render the Notes view which
was previously done in the index router.