Emberjs v4无法复制对象
Emberjs v4 Unable to copy object
我正在将代码升级到V4,但在复制对象时遇到了一个问题。我想我显然已经实现了Em.Copyable接口,但Em.Copy对我来说不可用,所以我在控制台中遇到了一个错误。我做错了什么?我设置了一个简单的jsfiddle来显示我遇到的问题。我确信我只是遗漏了一些东西,但文档已经完全更改,不再有任何最新的示例。
示例
拿这个物体来说:
App.Key = Em.Object.create(Em.Copyable, {
first: 1,
second: 2
});
这个事件(在jsfiddle中是一个按钮,但它可以是任何东西):
doClick: function () {
var k = Em.copy(App.Key);
}
收到以下错误消息,代码执行停止:
Error: assertion failed: Cannot clone an Ember.Object that does not implement Ember.Copyable
Ember Object.create()最近发生了更改,不再支持mixin。有几种选择。最常见的是在扩展ember对象时添加mixin。例如:
App.Key = Em.Object.extend(Em.Copyable);
App.key = Em.Object.create({
first: 1,
second: 2
});
如果你真的想在创建过程中使用add-mixins,你可以使用新的createWithMixins
方法:
App.key = Em.Object.createWithMixins(Em.Copyable, {
first: 1,
second: 2
});
现在您的对象已经有了Mixin,您会发现该示例仍然失败:Object [object Object] has no method 'copy'
。这是因为Em.Copyable mixin实际上并没有提供实现——它只是向Ember发出信号,表明您的对象支持copy
操作。您仍然需要在类上实现copy
方法。
您可以使用
App.Key = Ember.Map.create({
first: 1,
second: 2
});
以创建默认模型,该模型将具有copy方法。
相关文章:
- 何时需要使用Object.assign()方法来复制对象的实例
- lodash:深度复制对象,但不是所有属性
- 复制对象,然后更新 JSON 对象中的值
- 如何使用 jquery 按值复制对象
- 如何在 CoffeeScript 中克隆/复制对象的实例
- 为什么 jQuery 扩展深拷贝不递归复制对象
- 使用 jQuery 深层复制对象数组属性值
- 由 Object.Assign() 函数生成的复制对象具有副作用
- 复制对象后删除对象属性时出现奇怪的行为
- angular.copy无法复制对象
- 在JavaScript中复制对象属性
- Javascript:如何复制对象并保持其原型链
- 如何在另一个对象中复制对象属性
- 如何在React中复制对象之间的嵌套状态
- 如何访问或复制对象的字符串值
- 通过引用复制对象是否有实际用途
- 如何在不调用构造函数的情况下复制对象及其原型链?
- 如何在javascript中深度复制对象作为对象而不是数组
- 复制对象的属性,而不必重复所有变量名
- VueJs如何从v-repeat复制对象