这是我的路由器:
this.resource('catalog', function(){
this.route('products'),
this.route('product', {path: 'product/:id'})
});
catalog/products
概述了所有产品。如果单击一个产品,您将转换为catalog/product/123
,而123
是产品的ID。在概述中还有一个New product
按钮,您可以在其中创建新产品。在我的代码中,我在此按钮后面进行了以下转换:
actions: {
new: function(){
this.transitionToRoute('catalog.product', null);
}
}
网址是:catalog/product/undefined
我认为一切都很好,因为没有ID,因为此产品是新产品,稍后会保存。但我setupController
的{{1}}说了不同的内容:
CatalogProductRoute
不幸的是setupController: function(controller, model){
var productId = model.id;
if(productId){
console.log('product exists with id: ' + productId);
} else {
console.log('product does not exist');
}
}
的值为productId
,因此第一个if子句为true,但我认为它类似于null,因为我在undefined
中移交了null。我怎么解决这个问题?我做错了什么?
答案 0 :(得分:1)
空模型在未来可能会出现问题。在查看产品和创建产品之间进行良好的关注分离可能更好。
您可以考虑将路由器更改为以下内容:
this.resource('catalog', function(){
this.resource('products', function(){
this.route('product', {path: ':id'})
this.route('create');
}),
});
然后在创建时,您就在这个端点上:
/products/create