Ember delete / destroy并不总是从视图中删除记录

时间:2014-02-27 03:13:41

标签: ember.js

更新

这可能与this question有关。

当我使用rec.delete()和rec.save()或rec.destroy()删除记录时,它会删除记录但有时会在视图中留下子模型片段,如果我刷新屏幕则会消失。关于这个问题的可能原因/解决方案的任何想法?

我的路由器地图

App.Router.map(function () {
    this.resource('cart', function () {
        this.route("index", { path: "/" });
        this.route('product', {path: 'products/:product_id'});
    });
});

用户在cart.index中启动,然后选择转换为ProductRoute的产品。然后当他们删除我的ProductController中的产品时:

    delete: function () {
        var rec = this.get('model'),
            self = this;
        rec.deleteRecord();
        rec.save().then(function () {
            self.transitionToRoute('cart.index');    
        });
    }

然而,当cart.index被重新显示时,它有时会在视图中保留分层多模型产品的子模型残余,否则它会正确删除记录。有任何想法吗?或者,我如何使cart.index刷新其模型?

在CartIndexRoute的afterModel钩子中,我可以看到产品记录被标记为isDeleted - 但它应该被删除?

1 个答案:

答案 0 :(得分:0)

到目前为止,我能找到的最佳解决方案是增强cart.index路由以过滤掉任何isDeleted记录。像这样的东西:

afterModel: function(model){
    if ((!model.get('products').isAny('isDeleted',false)) || model.get('products.length') === 0){
        this.send('exitCartIndex');
    }
}

然后在我的模板中:

{{#unless product.isDeleted}}
  {{render 'sumCartProduct' product}}
{{/unless}}

如果有人有更好的解决方案,那就太棒了。