我正在尝试使用RESTful后端首次创建Ember.js应用程序。我一直在使用从我的服务器渲染的HTML,因此我是ember的新手。 我有一个基于所有者ID获取餐馆的查询,然后在标题栏中显示该名称。
LiveKitchen.RestaurantController = Ember.ObjectController.extend({
needs : 'login'
});
LiveKitchen.RestaurantRoute = Ember.Route.extend({
model: function() {
console.log(this.controllerFor('login').get('user_id'));
console.log('Fetching Restaurants ' + this.store.find('restaurant', {owner_id : this.controllerFor('login').get('user_id')}));
var res = this.store.find('restaurant', {owner_id : this.controllerFor('login').get('user_id')});
// restaurant.tables = this.store.find('table', {restaurant_id : restaurant.mongo_id});
console.log('Restaurant ' + res);
return res.objectAt(0);
// return restaurant;
}
});
我已使用调试器验证了响应,并看到正确返回了json数据。不过我的模板
<script type="text/x-handlebars" data-template-name="restaurant">
<small>
<i class="icon-leaf"></i>
{{name}}
</small>
</script>
没有在页面中打印的名称。
你能帮我解决一下我如何调试它并找出数据未呈现的原因吗?由于没有错误,我无法找出接下来要采取的步骤。
答案 0 :(得分:0)
问题可能是使用objectAt(0),尝试这样做:
return res.get('firstObject');
答案 1 :(得分:0)
终于明白了。感谢您的指针,我不得不做res.get('firstObject'),但不是在模型回调中,而是在setupController回调中。看来如果我像我一样使用查询,它将获得一个无法分配给对象控制器的promise数组。此外,由于它是一个承诺,在履行承诺之前,不会调用setupController。所以以下面的方式使用setupController回调
LiveKitchen.RestaurantRoute = Ember.Route.extend({
model: function() {
console.log(this.controllerFor('login').get('restaurant_id'));
console.log('Fetching Restaurants ');
//var res = this.store.find('restaurant', this.controllerFor('login').get('restaurant_id'));
var res = this.store.find('restaurant', {"owner_id" : this.controllerFor('login').get('user_id')});
console.log('Restaurant ' + res);
return res;
},
setupController : function(controller, model) {
console.log('Incoming ' + model.get('firstObject').get('name'));
controller.set('model', model.get('firstObject'));
}
});
现在它正在运作。发布它可以帮助其他人继续前进。