Emberjs v4无法复制对象

DF_*_*DF_ 3 javascript ember.js

我正在将代码升级到V4,但在复制对象时遇到了问题.我想我显然已经实现了Em.Copyable接口,但我无法使用Em.Copy,所以我在控制台中出错了.我做错了什么?我已经设置了一个简单的jsfiddle来显示我遇到的问题.我确定我只是遗漏了一些东西,但是文档已经完全改变了,而且没有任何日期的例子了.

例

拿这个对象:

App.Key = Em.Object.create(Em.Copyable, {
    first: 1,
    second: 2
});
Run Code Online (Sandbox Code Playgroud)

这个事件(在jsfiddle中它是一个按钮,但它可以是任何东西):

doClick: function () {
    var k = Em.copy(App.Key);
}
Run Code Online (Sandbox Code Playgroud)

收到以下错误消息并停止代码执行:

Error: assertion failed: Cannot clone an Ember.Object that does not implement Ember.Copyable
Run Code Online (Sandbox Code Playgroud)

Mik*_*tti 5

Ember Object.create()最近发生了变化,它不再支持mixins.还有一些选择.最常见的是在扩展ember对象时添加mixins.例如:

App.Key = Em.Object.extend(Em.Copyable);
App.key = Em.Object.create({
  first: 1,
  second: 2
});
Run Code Online (Sandbox Code Playgroud)

如果你真的想在创建过程中使用add mixins,你可以使用新createWithMixins方法:

App.key = Em.Object.createWithMixins(Em.Copyable, {
  first: 1,
  second: 2
});
Run Code Online (Sandbox Code Playgroud)

既然你的对象有了Mixin,你会发现这个例子仍然失败了:Object [object Object] has no method 'copy'.这是因为Em.Copyable mixin实际上并没有提供实现 - 它只是向Ember发信号通知你的对象支持copy操作.您仍然需要copy在类上实现该方法.