toggleProperty(“编辑”)在ember.js中是如何工作的?

0pizxfdo  于 2022-11-05  发布在  其他
关注(0)|答案(1)|浏览(158)

代码

import Ember from 'ember';

export default Ember.Component.extend({
  editing: false,
  actions: {
      editTodo() {
          this.toggleProperty("editing");
      },
      submitTodo() {
          const todo = this.get("todo");
          if (todo.get("title") == "") {
              todo.destroyRecord().then(() => {
                  this.toggleProperty("editing");
              });
          } else {
              this.toggleProperty("editing");
          }
      },
      deleteTodo() {
          this.get("todo").destroyRecord();
      }
  }
});

这个“editing”属性是如何起作用,有人能解释一下吗?

iovurdzv

iovurdzv1#

首先,这看起来像是旧的ember代码。在现代的ember中,我只会这样做:

@tracked editing = false;

@action
editTodo() {
  this.editing = !this.editing;
}
...

这也解释了旧的toggleProperty是如何工作的。基本上是这样的:

toggleProperty(name) {
  this.set(name, !this.get(name));
}

(如果你理解旧的embergetset)基本上是这样的:

toggleProperty(name) {
  this[name] = !this[name];
}

而且还通知ember已更改的属性,以便ember更新DOM。现在的ember不需要它,因为它使用@tracked来标记状态,其余的将 * 正常工作 *。

相关问题