Skip to content

Instantly share code, notes, and snippets.

@abrahamspaa
Last active August 11, 2016 15:39
Show Gist options
  • Save abrahamspaa/9585ad9213a0466cb5051e8c87ea8acb to your computer and use it in GitHub Desktop.
Save abrahamspaa/9585ad9213a0466cb5051e8c87ea8acb to your computer and use it in GitHub Desktop.
form validation
import Ember from 'ember';
export default Ember.Controller.extend({
appName: 'Ember Twiddle',
firstName: ''
});
import Ember from 'ember';
import DS from 'ember-data';
const { Errors } = DS;
const { computed, isEmpty } = Ember;
const _checkValidation = (errors, value, labelText) => {
let label = labelText.camelize();
errors.remove(label);
if(isEmpty(value)) {
errors.add(label, 'Please enter is invalid');
} else if (value.match(/(\d)+/g) && errors) {
errors.add(label, 'String only please');
return value;
} else if (errors) {
return value;
}
}
export default Ember.Component.extend({
errors: Errors.create(),
label: 'Label text',
needsValidation: true,
value: computed('errors', {
get() { return null; },
set(_,v) {
if (this.get('needsValidation') && this.get('startValidating')) {
let { label, errors } = this.getProperties('errors', 'label');
return _checkValidation(errors, v, label);
}
}
}),
actions: {
startValidating() {
this.set('startValidating', true);
}
}
});
<label>First Name</label>
<br />
{{input value=(mut value) focus-in=(action 'startValidating')}}
<span>{{errors.firstObject.message}}</span>
import Ember from 'ember';
const { computed } = Ember;
export default Ember.Component.extend({
value: null,
errors: computed('value', function() {
let value = this.get('value');
console.log(1);
return [
{message: 'Please enter the string'}
]
})
});
{{yield}}
<label>Surname</label>
<br/>
{{input value=value}}
{{#each errors as |error|}}
{{log error}}
<span>{{error.message}}</span>
{{/each}}
import Ember from 'ember';
import config from './config/environment';
const Router = Ember.Router.extend({
location: 'none',
rootURL: config.rootURL
});
Router.map(function() {
});
export default Router;
<h1>Welcome to {{appName}}</h1>
<br>
<br>
hello {{firstName}}
{{first-name value=firstName}}
<br />
{{input-surname errors=errors}}
{{outlet}}
<br>
<br>
{
"version": "0.10.4",
"EmberENV": {
"FEATURES": {}
},
"options": {
"use_pods": true,
"enable-testing": false
},
"dependencies": {
"jquery": "https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.3/jquery.js",
"ember": "2.7.0",
"ember-data": "2.7.0",
"ember-template-compiler": "2.7.0"
},
"addons": {}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment