事务提交后设置回调

jos*_*ume 8 ember.js ember-data

我正在尝试实现一些我认为有一个简单答案的东西,但不知何故我找不到它的源代码ember-data.

我想在将一组特定的修改提交到数据存储区后触发一个操作.这是我目前的代码:

var transaction = App.store.transaction();
user = App.get('currentUser');
transaction.add(user);
user.set('name', "Michael Jackson");
transaction.commit();
App.navigate('dashboard');
Run Code Online (Sandbox Code Playgroud)

我的第一次尝试是在这个用户的isDirty属性上添加一个观察者,但是a)它似乎不是惯用的,更重要的是b)我必须在最后手动删除那个观察者 - 如果某些异常在两者之间增加,则容易出错.例如,不会被删除.

有任何想法吗?你会怎么做?

Cor*_*ken 6

您可以在模型上使用didCreate和didUpdate.我假设你有一个用户模型,如下所示:

MyApp.User = DS.Model.extend({
  first: DS.attr('string'),
  page: DS.attr('string'),
  didUpdate: function() {
    //Do something
  },
  didCreate: function() {
    //do something
  }
});
Run Code Online (Sandbox Code Playgroud)

  • 问题是,这种逻辑不属于模型本身.它应属于该特定背景.Ember公司最近推出的一次性事件的回调,可能在这种情况下是有用的:https://github.com/emberjs/ember.js/commit/1809e65012b93c0a530bfcb95eec22d972069745#L0R19所以我可以很容易地:model.one("didCreate",函数(){随你}); (7认同)
  • 我想创建一个全局AJAX加载器映像,只有在发生提交时才会滚动,对于任何模型.如何才能做到这一点? (2认同)