Skip to content

Instantly share code, notes, and snippets.

@grapho
Created October 5, 2014 18:41
Show Gist options
  • Save grapho/1fe12bb06fb4399eb57b to your computer and use it in GitHub Desktop.
Save grapho/1fe12bb06fb4399eb57b to your computer and use it in GitHub Desktop.
Ember Starter Kit // source http://emberjs.jsbin.com/lowekagapevi/1
<!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">
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="http://builds.handlebarsjs.com.s3.amazonaws.com/handlebars-v1.3.0.js"></script>
<script src="http://builds.emberjs.com/tags/v1.7.0/ember.js"></script>
<script src="http://builds.emberjs.com/tags/v1.0.0-beta.10/ember-data.js"></script>
<style id="jsbin-css">
/* Put your CSS here */
html, body {
margin: 20px;
}
</style>
</head>
<body>
<script type="text/x-handlebars">
<h2>Welcome to Ember.js</h2>
{{outlet}}
</script>
<script type="text/x-handlebars" data-template-name="index">
{{name}}
<ul>
{{#each project in model.projects itemController="project"}}
<li>{{project.name}}</li>
<li>{{input value=project.newTaskName action="addTask"}}</li>
<li>
<ul>
{{#each task in project.tasks}}
<li {{action "completeTask" task}}>
{{#if task.isCompleted}}&#x2713;{{/if}}
{{task.name}}
</li>
{{/each}}
</ul>
</li>
{{/each}}
</ul>
</script>
<script id="jsbin-javascript">
App = Ember.Application.create();
App.ApplicationAdapter = DS.FixtureAdapter;
App.Router.map(function() {
});
App.Workspace = DS.Model.extend({
name: DS.attr('string'),
projects: DS.hasMany('project', {async: true})
});
App.Project = DS.Model.extend({
name: DS.attr('string'),
workspace: DS.belongsTo('workspace'),
tasks: DS.hasMany('task', {async: true})
});
App.Task = DS.Model.extend({
name: DS.attr('string'),
project: DS.belongsTo('project')
});
App.Workspace.FIXTURES = [
{ id: 1, name: 'Workspace 1', projects: [1, 2]}
];
App.Project.FIXTURES = [
{id: 1, name: 'Project 1', tasks: []},
{id: 2, name: 'Project 2', tasks: [1]}
];
App.Task.FIXTURES = [
{id: 1, name: 'Task 1', tasks: []}
];
App.IndexRoute = Ember.Route.extend({
model: function() {
return this.store.find('workspace', 1);
}
});
App.ProjectController = Ember.ObjectController.extend({
actions: {
addTask: function() {
var taskName = this.get('newTaskName'),
project = this.get('model');
console.log(project.get('name'));
var task = this.store.createRecord('task', {name: taskName, project: project});
this.set('newTaskName', null);
},
completeTask: function(task) {
task.toggleProperty('isCompleted');
}
}
});
</script>
<script id="jsbin-source-html" type="text/html"><!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">
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"><\/script>
<script src="http://builds.handlebarsjs.com.s3.amazonaws.com/handlebars-v1.3.0.js"><\/script>
<script src="http://builds.emberjs.com/tags/v1.7.0/ember.js"><\/script>
<script src="http://builds.emberjs.com/tags/v1.0.0-beta.10/ember-data.js"><\/script>
</head>
<body>
<script type="text/x-handlebars">
<h2>Welcome to Ember.js</h2>
{{outlet}}
<\/script>
<script type="text/x-handlebars" data-template-name="index">
{{name}}
<ul>
{{#each project in model.projects itemController="project"}}
<li>{{project.name}}</li>
<li>{{input value=project.newTaskName action="addTask"}}</li>
<li>
<ul>
{{#each task in project.tasks}}
<li {{action "completeTask" task}}>
{{#if task.isCompleted}}&#x2713;{{/if}}
{{task.name}}
</li>
{{/each}}
</ul>
</li>
{{/each}}
</ul>
<\/script>
</body>
</html>
</script>
<script id="jsbin-source-css" type="text/css">/* Put your CSS here */
html, body {
margin: 20px;
}
</script>
<script id="jsbin-source-javascript" type="text/javascript">App = Ember.Application.create();
App.ApplicationAdapter = DS.FixtureAdapter;
App.Router.map(function() {
});
App.Workspace = DS.Model.extend({
name: DS.attr('string'),
projects: DS.hasMany('project', {async: true})
});
App.Project = DS.Model.extend({
name: DS.attr('string'),
workspace: DS.belongsTo('workspace'),
tasks: DS.hasMany('task', {async: true})
});
App.Task = DS.Model.extend({
name: DS.attr('string'),
project: DS.belongsTo('project')
});
App.Workspace.FIXTURES = [
{ id: 1, name: 'Workspace 1', projects: [1, 2]}
];
App.Project.FIXTURES = [
{id: 1, name: 'Project 1', tasks: []},
{id: 2, name: 'Project 2', tasks: [1]}
];
App.Task.FIXTURES = [
{id: 1, name: 'Task 1', tasks: []}
];
App.IndexRoute = Ember.Route.extend({
model: function() {
return this.store.find('workspace', 1);
}
});
App.ProjectController = Ember.ObjectController.extend({
actions: {
addTask: function() {
var taskName = this.get('newTaskName'),
project = this.get('model');
console.log(project.get('name'));
var task = this.store.createRecord('task', {name: taskName, project: project});
this.set('newTaskName', null);
},
completeTask: function(task) {
task.toggleProperty('isCompleted');
}
}
});
</script></body>
</html>
/* Put your CSS here */
html, body {
margin: 20px;
}
App = Ember.Application.create();
App.ApplicationAdapter = DS.FixtureAdapter;
App.Router.map(function() {
});
App.Workspace = DS.Model.extend({
name: DS.attr('string'),
projects: DS.hasMany('project', {async: true})
});
App.Project = DS.Model.extend({
name: DS.attr('string'),
workspace: DS.belongsTo('workspace'),
tasks: DS.hasMany('task', {async: true})
});
App.Task = DS.Model.extend({
name: DS.attr('string'),
project: DS.belongsTo('project')
});
App.Workspace.FIXTURES = [
{ id: 1, name: 'Workspace 1', projects: [1, 2]}
];
App.Project.FIXTURES = [
{id: 1, name: 'Project 1', tasks: []},
{id: 2, name: 'Project 2', tasks: [1]}
];
App.Task.FIXTURES = [
{id: 1, name: 'Task 1', tasks: []}
];
App.IndexRoute = Ember.Route.extend({
model: function() {
return this.store.find('workspace', 1);
}
});
App.ProjectController = Ember.ObjectController.extend({
actions: {
addTask: function() {
var taskName = this.get('newTaskName'),
project = this.get('model');
console.log(project.get('name'));
var task = this.store.createRecord('task', {name: taskName, project: project});
this.set('newTaskName', null);
},
completeTask: function(task) {
task.toggleProperty('isCompleted');
}
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment