Ember.js 在余烬中呈现列表中的一项
在我的Ember应用程序中,我使用一个ajax调用获得了所有餐馆的列表,该调用是从Distance联合创始人的博客文章中复制的 我设置了一个调用上面显示的findAll并将其呈现到应用程序模板中的路由Ember.js 在余烬中呈现列表中的一项,ember.js,Ember.js,在我的Ember应用程序中,我使用一个ajax调用获得了所有餐馆的列表,该调用是从Distance联合创始人的博客文章中复制的 我设置了一个调用上面显示的findAll并将其呈现到应用程序模板中的路由 App.RestaurantsRoute = Ember.Route.extend({ model: function(params) { return(App.Restaurant.findAll(params)); }, renderTemplate: function(
App.RestaurantsRoute = Ember.Route.extend({
model: function(params) {
return(App.Restaurant.findAll(params));
},
renderTemplate: function() {
this.render('restaurants', {into: 'application'});
}
});
餐厅显示为如下所示的餐厅
模板,其中包含指向每个餐厅的链接。我还包括了餐厅
模板
<script type="text/x-handlebars" id="restaurants">
<div class='span4'>
{{#each item in model}}
<li> {{#link-to 'restaurant' item}}
{{ item.name }}
{{/link-to }}</li>
{{/each}}
</ul>
</div>
<div class="span4 offset4">
{{ outlet}}
</div>
</script>
因此,我希望当我点击餐厅列表中特定餐厅的链接时,它会将此餐厅
模板插入餐厅
模板中定义的门店
还有一个餐厅模型的findItem
App.Restaurant.reopenClass({
findItem: function(){
console.log('is this getting called? No...');
return 'blah'
}
但是这些console.log都没有被调用
在Ember starter视频中,当Tom Dale单击列表中的一篇博客文章时,该文章将显示在为其定义的模板中,而他只需在帖子模板中设置路线(如我所做)和{outlet}即可接收该文章
你能理解为什么在这种情况下,同样的方法不适用于我吗 当您导航到
餐厅
路线时,项目
将是该路线的模型
因此,在您的模板中,如果您尝试
<script type="text/x-handlebars" id="restaurant">
this text is getting rendered
{{ model.name }}
</script>
正在渲染此文本
{{model.name}
你可以看到餐馆的名字
而且模型钩子也没有被调用,并且进一步的控制台.log
s不工作,因为 注意:带有动态段的路由只有在通过URL输入时才会调用其模型挂钩。如果路线是通过转换输入的(例如,使用“链接到把手”辅助对象时),则已提供模型上下文,并且不会执行挂钩。没有动态线段的管线将始终执行模型挂钩
希望一切都会好起来。非常感谢。我不知道是什么问题,因为余烬没有抛出任何类型的错误消息。我想知道为什么它不告诉我模板中没有
项
<script type="text/x-handlebars" id="restaurant">
this text is getting rendered
{{ item }} //item nor item.name are getting rendered
</script>
App.RestaurantRoute = Ember.Route.extend({
model: function(params) {
console.log(params);
console.log('resto');
return App.Restaurant.findItem(params);
}
});
App.Restaurant.reopenClass({
findItem: function(){
console.log('is this getting called? No...');
return 'blah'
}
<script type="text/x-handlebars" id="restaurant">
this text is getting rendered
{{ model.name }}
</script>