dar*_*123 5 ember.js ember-data
我不确定这是否是表达我的要求的正确方法.但是"fork"这个词出现在Ember Data github页面的路线图中.它是EPF的杀手级功能.我想知道我是否可以在Ember Data中做到这一点.
当我们有一个编辑页面并绑定一个模型时,fork功能非常有用.当我们编辑信息时,我不希望更改模型属性,因为如果模型属性也显示在其他位置,它们将自动更改.那不是我想要的.
一个示例是页面左侧的列表和页面右侧特定模型的编辑表单.当我在文本字段中修改角色名称时,左侧的角色名称因数据绑定而更改.

EPF通过"分叉"现有模型并将其设置在子会话中来解决此问题.EPF中的会话与Ember Data中的商店类似.修改分叉模型时,它不会影响主会话中的模型.更新分叉模型后,可以将其合并回主会话,并更新主会话中的相应模型.
我认为Ember Data中的解决方案是创建一个不同的商店并将模型复制到该商店.但它有点复杂.有没有人有更好的解决方案?我搜索stackoverflow和ember讨论论坛,但没有找到答案.
我不确定 Ember 中是否有标准或通用的方法来执行此操作,但我编写了一个 Mixin,我可以将其放在我的路线上以提供模型的一些基本“缓冲”:
App.BufferedRouteMixin = Ember.Mixin.create({
    setupController: function(controller, model) {
        this.setBufferFromModel(controller, model);
        this._super(controller, model);
    },
    setBufferFromModel: function(controller, model) {
        var buffer = {};
        controller.set('model', model);
        model.eachAttribute(function(name, meta) {
            buffer[name] = model.get(name);
        });
        controller.set('buffer', buffer);
    },
    setModelFromBuffer: function() {
        var model = this.get('model'),
            buffer = this.get('buffer');
        model.eachAttribute(function(name, meta) {
            if (buffer[name]) {
                model.set(name, buffer[name]);
            }
        });
    }
});
一旦将其添加到我的编辑路线中,我就可以调用setModelFromBuffer我的save操作。在我的模板中,我可以使用{{#with buffer}}助手。
| 归档时间: | 
 | 
| 查看次数: | 585 次 | 
| 最近记录: |