EmberJS从事件处理程序访问子视图的好方法

时间:2012-03-27 11:45:48

标签: javascript ember.js

我最近一直在尝试EmberJS(它的惊人绑定框架的忠实粉丝)我已经编写了一个测试GUI来启动和显示某种通用异步进程的状态(例如,像AJAX请求,但是它可能是不同的东西)

http://jsfiddle.net/whoward/fLCDj/

我发现自己正在与框架作斗争,以便能够从我的点击事件处理程序中访问我想要的子视图,这可能是一个很好的指示,我没有遵循最佳实践。

有什么建议吗? (我正在谈论的代码是在名为“process”的事件处理程序中需要的indicatorView属性)

1 个答案:

答案 0 :(得分:4)

从技术角度来看,您可以在创建子项时将子视图设置在父项上:

  init: function() {
    this._super();
    this.get("parentView").set("indicatorView", this);
  }

然而,这是一个很大的代码味道,所有这一切都让我觉得它是一个相当复杂的架构。我已经重新设计了一个示例,其中包含一个控制器,它充当模型和视图的中介:http://jsfiddle.net/dgeb/9QbX3/

我很快就这样做了,我确信它可以进一步重构。一般来说,尽量保持逻辑从V - >流出。 C - > M - > C - > V.家长观点或一般的父对象不应该依赖于他们的孩子。