了解Ember.JS itemController

时间:2014-04-22 18:29:59

标签: javascript ember.js

我正在阅读EmberJS文档并遇到了一个绊脚石:

ITEM CONTROLLER
It is often useful to specify a controller to decorate individual items in the ArrayController while iterating over them. This can be done in the ArrayController definition:

App.SongsController = Ember.ArrayController.extend({
  itemController: 'song'
});

这里不完全确定itemController的目的是什么。 song属性现在是否已代理ArrayController名为App.SongsController的代理? itemController到底在做什么?

1 个答案:

答案 0 :(得分:2)

当Songs数组中的每个元素以某种方式使用时(即在{{each}}循环中呈现),每首歌曲都会有自己的控制器实例化。因此,您可以拥有歌曲列表,每首歌曲都可以拥有自己的属性(例如isPlaying),或者您可以编写action个处理程序来响应用户互动playpause

对于阵列中的每首歌曲,您的SongController都会存在。

App.SongController = Ember.ObjectController.extend({
  isPlaying: false,
  actions: {
    someAction: ...
  }
});

如果您不需要这些属性或在此控制器上处理操作,则可以不使用itemController。