nylon
0.0.2 • Public • Published Nylon
Create a model
class Person extends Model
@attr 'name':
default: 'Anonymous'
validate: (value) -> return false unless value
@attr 'birthday':
default: 0
set: (value) -> Math.min value, 1900 + (new Date).getYear()
class Book extends Model
@attr 'title':
default: 'Untitled'
@attr 'publishedAt':
default: 0
Change model instance attributes
vonnegut = new Person name: 'Vonnegut'
vonnegut.set name: 'Kurt Vonnegut', birthday: 1922
Create a relationship
Person.hasMany publications: Book
Book.belongsToOne author: Person, as: 'publications'
Change model instance relationships
catsCradle = new Book title: 'Cat’s Cradle', publishedAt: 1963
vonnegut.get('publications').add catsCradle
Create a view
class Bio extends View
@model: Person
@template: '''
<button class="delete">X</button>
<div class="name"></div>
<div class="pubs"></div>
'''
@el '.name': name
@el '.pubs': pubs
@render 'name': (value) ->
@name.innerHTML = value
@render 'publications': ->
@pubs.innerHTML = @model.publicaions.count()
Create a controller
class BioEditor extends Controller
@view: Bio
constructor: ->
@el.setAttribute 'tabindex', 0
@on 'click* .delete': 'deleteModel'
@on 'keydown*:DELETE': 'deleteModel'
deleteModel: =>
@model.destroy()
Readme
Keywords
nonePackage Sidebar
Install
Weekly Downloads