Ember.js 在记录上自动设置updatedAt时间

Ember.js 在记录上自动设置updatedAt时间,ember.js,Ember.js,当记录的任何属性的值发生更改时,如何将记录上updatedAt字段的值设置为当前时间 我看到DS.Model有一个didUpdateevent()-也许我应该在这个问题上添加一个观察者(但是在文档中我找不到监听事件的例子)。或者可能模型上的某种计算属性会起作用?您可以观察到这样的DIDDUPDATE事件: // in controller with model, that extends Ember.Model class this.get('model').on('didUpdate', fu

当记录的任何属性的值发生更改时,如何将记录上updatedAt字段的值设置为当前时间


我看到
DS.Model
有一个
didUpdate
event()-也许我应该在这个问题上添加一个观察者(但是在文档中我找不到监听事件的例子)。或者可能模型上的某种计算属性会起作用?

您可以观察到这样的DIDDUPDATE事件:

// in controller with model, that extends Ember.Model class
this.get('model').on('didUpdate', functuion() {
    // set time value to updatedAt property
});
只是别忘了在不再需要的时候删除observer

另外,我非常确定这种模型的属性(createdAt、updatedAt等)对于客户端必须具有只读状态。在这种情况下,必须在服务器端将updatedAt属性设置为正确的值,然后返回到客户端(使用其他属性,如ember所期望的)

p.p.S.如果您需要在模型代码中封装此观察者,您可以这样做:

  init: function() {
      this._super.apply(this, arguments);

      this.on('didUpdate', function() {
          // logic
      });
  }

我使用的是本地存储,所以在客户端设置是正确的。顺便问一下,你所说的“不再需要”是什么意思?当路线发生变化时,我应该将其删除,然后在他们返回该路线时再次添加它?还有,有没有办法直接在模型上设置?我使用同一个模型和两个不同的控制器,所以我想保持干燥。我的意思是当客户端不使用此模型时,删除一个观察者。若模型的生命周期和应用程序的生命周期相同,那个么您就不必担心它了。我不确定如何在模型本身内部设置值。这就像数据库条目本身发生变化一样。我认为在这里实现DRY方法的最好方法是将模型的管理代码分组到模型的控制器。然后,你可以在其他地方使用这个控制器。但是,如果有许多模型,那么在这种情况下,将管理代码放置到模型中可能是正确的决策。您可以通过重写模型类中的
init
方法来实现。