【问题标题】:Ember.js: How can I decouple my views from my controllers?Ember.js:如何将视图与控制器分离?
【发布时间】:2012-03-22 01:08:36
【问题描述】:

我正在尝试重构 ember.js 应用程序的紧密耦合部分,尤其是控制器的视图和模板。

我见过的所有示例都将视图直接绑定到视图的类定义中的控制器,或者通过将(全局)控制器路径传递给模板本身中的视图。

TargetActionSupport mixin(我认为,sproutcore 中的 DelegateSupport)似乎是一个不错的选择,但仍需要在模板本身中设置目标(控制器)和操作。

理想情况下,我想在我的控制器中实例化我的视图(以某种方式),设置目标和操作,但在我的模板中设置表示变量(例如:静态类、id),但我'不知道如何完成这件事,或者它是否是正确的方法。

【问题讨论】:

  • MVC 的论点很明确。控制器添加了一组可以在模型上完成的已定义操作。任何参与过大型项目的人都知道 JSP 页面直接更改数据的原因。在我看来,这已经足够抽象了(考虑到任何一点抽象都是有代价的)。更进一步的目的是什么?

标签: model-view-controller ember.js


【解决方案1】:

您可以通过编程方式实例化视图并将它们插入到 DOM 中的任意位置:

var view = Ember.View.create();
view.appendTo('#someElement');

如果你想消除全局绑定路径,你可以在实例化时传入一个对视图的控制器引用:

var controller = Ember.Object.create({content: {}}),
    view = Ember.View.create({
      controller: controller,
      contentBinding: 'controller.content'
    });

我还建议查看 Ember StateManager。

【讨论】:

    猜你喜欢
    • 2012-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-11
    • 1970-01-01
    • 2011-12-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多