Skip to content

Instantly share code, notes, and snippets.

@lmcardle
Forked from anonymous/jsbin.AbinofO.css
Created October 15, 2013 05:05
Show Gist options
  • Save lmcardle/6986746 to your computer and use it in GitHub Desktop.
Save lmcardle/6986746 to your computer and use it in GitHub Desktop.
Radio Buttons
/* Put your CSS here */
html, body {
margin: 20px;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Ember Starter Kit</title>
<link rel="stylesheet" href="http://cdnjs.cloudflare.com/ajax/libs/normalize/2.1.0/normalize.css">
</head>
<body>
<script type="text/x-handlebars">
<h2>Welcome to Ember.js</h2>
{{outlet}}
</script>
<script type="text/x-handlebars" data-template-name="index">
<ul>
{{#each model}}
<li>
{{view Ember.RadioButton checked=selected name="people"}}
{{name}},
selected? {{selected}}
</li>
{{/each}}
</ul>
</script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="http://builds.emberjs.com/handlebars-1.0.0.js"></script>
<script src="http://builds.emberjs.com/beta/ember.min.js"></script>
</body>
</html>
Ember.RadioButton = Ember.View.extend({
classNames: ['ember-radio-button'],
tagName: 'input',
attributeBindings: ['type', 'checked', 'disabled', 'tabindex', 'name'],
type: 'radio',
checked: false,
disabled: false,
init: function() {
this._super();
this.on('change', this, this._select);
},
didInsertElement: function() {
this.$().on('deselect', this._deselect.bind(this));
},
willRemoveElement: function() {
this.$().off();
},
_deselect: function() {
this._updateElementValue();
},
_select: function() {
this._updateElementValue();
var groupSelector = 'input[name="' + this.get('name') + '"]';
$(groupSelector).not(this.$()).trigger('deselect');
},
_updateElementValue: function() {
this.set('checked', this.$().prop('checked'));
}
});
App = Ember.Application.create();
App.Router.map(function() {
// put your routes here
});
App.IndexRoute = Ember.Route.extend({
model: function() {
return [
App.Person.create({name: "Andrew"}),
App.Person.create({name: "Benard"}),
App.Person.create({name: "Catelyn"})
];
}
});
App.Person = Em.Object.extend({
selected: false,
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment