如何删除emberjs中的键?

Lio*_*han 3 javascript ember.js

我们都知道我们拥有getset使用它,但你如何delete成为一个emberjs对象的关键?

假设一个对象看起来像这样

Ember.Object.create({
    conf: {
        name: 'John',
        age: 16
    }
});
Run Code Online (Sandbox Code Playgroud)

在数据传输过程中,我需要删除一个密钥conf,比方说age.你怎么做才能正确删除密钥conf?我试过了set('conf.age', null),undefined但似乎根本没有工作.

编辑

一点点背景.当我说它不能用于设置undefined或null时,这意味着它不适合我的需要.我的类自动将conf数据保存到Mongo集合中.所以,现在假设您有一个未使用的密钥,您想要删除它,如何删除它?

请注意,有一个更大的类来管理保存过程/数据验证,因此扩展控制器只是为了删除不太合适(丑陋).并且有beforeSave一个扩展类可以挂钩来清理未使用的键的操作,但问题是如何删除此键?

貌似这样一个简单的动作在ember中不存在,可能是为了处理所有类型的绑定/观察者.

mih*_*hai 7

如果在ember对象上设置属性:

this.set('myObject.keyA', [1,2,3]);
Run Code Online (Sandbox Code Playgroud)

它现在将跟踪该密钥

Ember.keys('myObject'); // will show ['keyA'];
Run Code Online (Sandbox Code Playgroud)

您不能通过将其设置为null来删除密钥

this.set('myObject.keyA', null);
Run Code Online (Sandbox Code Playgroud)

以来

Ember.keys('myObject'); // will STILL show ['keyA'];
Run Code Online (Sandbox Code Playgroud)

而只是将其删除为javascript对象

delete this.get('myObject').keyA;
Run Code Online (Sandbox Code Playgroud)

然后确认钥匙不见了

Ember.keys('myObject'); // will show [] an empty array;
Run Code Online (Sandbox Code Playgroud)