I’m following along Ryan Florence’s ember101 #8 ember data screencast and am trying to build a Hacker News client that reads an API. But I’m stuck somewhere and can’t quite figure it out. Desperately trying to get a hold of Ember Data instead of using plain ole’ ajax.
Here’s the jsbin: http://jsbin.com/OFeCoR/2/edit?html,js,output
This is the JSON API: http://node-hnapi.herokuapp.com/news
Codes
var App = Ember.Application.create();
App.Store = DS.Store.extend({
revision: 12,
adapter: DS.RESTAdapter.create({
url: 'http://node-hnapi.herokuapp.com/'
})
});
App.News = DS.Model.extend({
title: DS.attr('string'),
url: DS.attr('string'),
user: DS.attr('string'),
timeAgo: DS.attr('string'),
points: DS.attr('number'),
commentsCount: DS.attr('number')
});
App.Router.map(function() {
this.resource('news', {path: '/news/:news_id'});
});
App.ApplicationRoute = Ember.Route.extend({
model: function() {
return App.News.find();
}
});
Views
<script type="text/x-handlebars">
<div class="pure-g-r content" id="layout">
<div class="pure-g-r" id="list">
<ul>
{{#each controller}}
<div class="news-item pure-g">
<div class="pure-g">
<div class="pure-u-1-5">
<div class="stats">
<div class="news-points">45</div>
<h3>Points</h3>
</div>
</div>
<div class="pure-u-4-5">
{{#linkTo "item" this}}
<h5 class="news-name">by {{user}}</h5>
{{/linkTo}}
<h4 class="news-subject">{{title}}</h4>
<p class="news-comments">{{commentsCount}} comments</p>
</div>
</div>
</div>
{{/each}}
</ul>
</div>
<div id="content">
{{outlet}}
</div>
</script>
<script type="text/x-handlebars" id="index">
<div class="news-content pure-u-1">
<div class="news-content-header pure-g-r">
<div class="pure-u-1-2">
<h1 class="news-content-title">Hamster News</h1>
<p class="news-content-subtitle">
A little Hacker News reader built with Ember and PureCSS.
</p>
</div>
<div class="pure-u-1-2 news-content-controls">
<button class="pure-button secondary-button">View Comments</button>
</div>
</div>
</script>
<script type="text/x-handlebars" id="news">
<div class="news-content pure-u-1">
<div class="news-content-header pure-g-r">
<div class="pure-u-1-2">
<h1 class="news-content-title">{{title}}</h1>
<p class="news-content-subtitle">
Posted by <a>{{user}}</a> at <span>{{timeAgo}}</span>
</p>
</div>
<div class="pure-u-1-2 news-content-controls">
<button class="pure-button secondary-button">View Comments</button>
</div>
</div>
<div class="news-content-body">
{{url}} ~ will be iframe
</div>
</div>
</script>
P.S. - I know this is using an older version of Ember and Ember-Data. I’ll move up to 1.0 once I sort this out.