Ember观察者/动作语法差异

时间:2015-03-28 04:55:29

标签: ember.js action observers

我已经阅读了有关操作哈希的文档,但在我能找到的每个示例中,当使用观察者时,人们会离开action:

像这样:

https://www.airpair.com/ember.js/posts/top-mistakes-ember-rails#6-properties-and-observes

他们喜欢扩展定义下的动作名称方向,就像定义属性一样,并且使用该属性定义匿名函数。

App.PostRoute = Ember.Route.extend({
  actions: {
    expand: function() {
      this.controller.set('isExpanded', true);
    }.observes('aProperty')
  }
});

VS

App.PostRoute = Ember.Route.extend({
  expand: function() {
    this.controller.set('isExpanded', true);
  }.observes('aProperty)
});

我的问题是这两种方式有什么不同?

如果您不使用actions:

是否会冒泡?

如果您不使用actions:,它是否会冒泡到路线?

最重要的是,这对使用观察者意味着什么?

http://emberjs.com/api/classes/Ember.ActionHandler.html#property_actions

1 个答案:

答案 0 :(得分:1)

行动和观察者是完全不同的两件事。

操作处理通过{{action}}从模板调用的操作,以及通过send从JavaScript调用的操作。是的,它们必须是actions散列。否则,它们将不会被发现,更不用说冒泡了。

观察者只是观察者,你可以将它们放在任何想要观察的地方。

在您的示例中,您使用observes进行了操作。那是什么用例?你想要完成什么?它似乎是两者一个动作和一个观察者,这是我以前从未见过的模式,它看起来并没有太大用处。