Skip to content

Instantly share code, notes, and snippets.

@kepek
Last active April 4, 2016 06:47
Show Gist options
  • Save kepek/1d299a9455c7b8ad71a9482344b8419b to your computer and use it in GitHub Desktop.
Save kepek/1d299a9455c7b8ad71a9482344b8419b to your computer and use it in GitHub Desktop.
import Ember from 'ember';
import DS from 'ember-data';
import {
validator, buildValidations
}
from 'ember-cp-validations';
const attr = DS.attr;
const Validations = buildValidations({
firstName: validator('presence', true),
lastName: validator('presence', true)
}, {
debounce: 500
});
export default DS.Model.extend(Validations, {
"firstName": attr('string'),
"lastName": attr('string')
});
import Ember from 'ember';
import DS from 'ember-data';
import { validator, buildValidations } from 'ember-cp-validations';
const attr = DS.attr;
const Validations = buildValidations({
username: {
description: 'Username',
validators: [
validator('presence', true),
validator('length', {
max: 15
})
]
},
password: {
description: 'Password',
validators: [
validator('presence', true),
validator('length', {
min: 4,
max: 8
}),
validator('format', {
regex: /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{4,8}$/,
message: '{description} must include at least one upper case letter, one lower case letter, and a number'
})
]
},
email: {
validators: [
validator('presence', true),
validator('format', {
type: 'email'
})
]
}
details: validator('belongs-to')
}, {
debounce: 500
});
export default DS.Model.extend(Validations, {
'username': attr('string'),
'password': attr('string'),
'email': attr('string'),
'details': DS.belongsTo('user/detail')
});
import Ember from 'ember'
export default Ember.Route.extend(AdapterHashRouteMixin, {
model(params) {
return Ember.RSVP.hash({
user: this.store.createRecord('user', {
details: this.store.createRecord('user/detail')
})
})
},
setupController(controller, models) {
this._super(...arguments)
controller.setProperties(models)
},
actions: {
createNewUser(model) {
model.save().then(() => {
Ember.Logger.warn( 'user/then', arguments )
})
.catch(() => {
Ember.Logger.warn( 'user/catch', arguments )
})
}
}
})
{{#bs-form action=(action "createNewUser" model.user) model=model.user novalidate="novalidate"}}
{{bs-form-element controlType="text" property="username" placeholder="Username"}}
{{bs-form-element controlType="password" property="password" placeholder="Password"}}
{{bs-form-element controlType="email" property="email" placeholder="Email"}}
{{bs-form-element controlType="text" property="details.firstName" placeholder="First Name"}}
{{bs-form-element controlType="text" property="details.lastName" placeholder="Last Name"}}
{{#bs-button buttonType="submit" type="primary"}}
Create New User
{{/bs-button}}
{{/bs-form}}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment