0
我正在創建一個Ember應用程序來顯示Twitter提要,但我無法通過嵌入式資源顯示單個推文。Ember.js路由器:嵌入式資源
的代碼如下:
模板
<script type="text/x-handlebars" data-template-name="tweets">
<div id="stream">
{{#each tweet in controller}}
<div class="tweet">
<p class="tweet_text">{{tweet.text}}</p>
<p> {{#linkTo "tweet" tweet}} {{tweet.id}} {{/linkTo}}</p>
</div>
{{/each}}
</div>
</script>
<script type="text/x-handlebars" data-template-name="tweet">
<div id="detail">
{{text}}
</div>
</script>
路由器
window.App = Ember.Application.create({
LOG_TRANSITIONS: true
});
App.Router.map(function(){
this.resource('tweets',function(){
this.resource('tweet',{path: ':tweet_id'})
});
});
// (1) App.Router.map(function(){
// this.resource('tweets')
// this.resource('tweet',{path: ':tweet_id'})
// });
App.IndexRoute = Ember.Route.extend({
redirect: function() {
this.transitionTo('tweets');
}
});
App.TweetsRoute = Ember.Route.extend({
model: function(){
var me = [];
$.getJSON("http://search.twitter.com/search.json?q=emberjs&rpp=200&count=200&callback=?",
{},
function (data) {
$.each(data.results,function(k,tweet){
var tweet = App.Tweet.create({
created_at: tweet.created_at,
from_user: tweet.from_user,
profile_image_url: tweet.profile_image_url,
text: tweet.text,
id: tweet.id
});
me.pushObject(tweet);
});
});
return me;
}
});
對象&控制器
App.TweetsController = Ember.ArrayController.extend({});
App.Tweet = Ember.Object.extend({
created_at: "",
from_user: "",
profile_image_url: "",
text: "",
id: 0
})
正如你所看到的,我有一個評論我們的路由器(1),它可以找到正確的推文,並將其呈現在推文模板中。不過,我希望將這條路線嵌套起來,以便我可以將其作爲主 - 細節應用程序來實現。
使用LOG_TRANSITIONS,我可以看到正確的路由被初始化,但我無法獲取要呈現的嵌套資源路徑。
任何想法將非常感激,在此先感謝。
如果您對此修復使用this.resource,它不起作用?我可以發現的唯一錯誤,就是你已經在你的模板中修復了這些錯誤。 – mavilein 2013-03-24 11:29:46
不,如果我改變只是路由器閱讀'資源'而不是'路線'我得到「未捕獲錯誤:斷言失敗:路由tweets.tweet沒有找到」,所以我改變鏈接在我的{{linkTo}}回到只是'鳴叫',我沒有得到錯誤,但我也沒有得到一個渲染模板。如果感覺像這樣一個小事情,但我不能把它釘住。 – 2013-03-24 11:37:42
只需再次閱讀指南http://emberjs.com/guides/routing/defining-your-routes/。我認爲嵌套資源路由的名稱應該只是鳴叫。當你將它作爲一個資源嵌套時,它似乎不會繼承父路由中的名稱前綴。所以請嘗試{{#linkTo'tweet'tweet}} plz :-) – mavilein 2013-03-24 11:45:35