Ember's transitionToRoute slu with with new entity

时间:2014-06-22 18:15:35

标签: url ember.js controller entity slug

这是我的路由器:

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。我怎么解决这个问题?我做错了什么?

1 个答案:

答案 0 :(得分:1)

空模型在未来可能会出现问题。在查看产品和创建产品之间进行良好的关注分离可能更好。

您可以考虑将路由器更改为以下内容:

this.resource('catalog', function(){
    this.resource('products', function(){
      this.route('product', {path: ':id'})
      this.route('create');
    }),
});

然后在创建时,您就在这个端点上:

/products/create

示例:http://emberjs.jsbin.com/OxIDiVU/701/edit