2014-01-20 43 views
0

在我的应用程序中,我创建了一个可重用的UI组件,它将让用户请求3次可能的约会。由于这是一个可重用的UI组件,这将是一个视图(以我的理解)。灰烬控制器vs视图

事情变得棘手的地方在于实现。为此,我们将使用几个模型(多次预约)。当我沿着添加时间的路线并将约会保存到服务器时,我一直在想,管理模型通常是控制器工作,而不是视图。

那么什么是正确的?

我想在视图的初始化过程中创建一个控制器,并用它做所有的模型操作吗?或者可以在视图中创建模型并在其中进行操作并保存它?

最后,我只想在模板中包括的观点,和一切应该只是工作:

{{#view App.ScheduleAppointment}} 

回答

1

可重复使用的UI组件应该是ComponentsTHIS是另一个很棒的资源。

我认为你是对的,管理模型是一个控制器的工作。不是视图或组件,因为它们只是UI的部分。在组件情况下可以跨越上下文重用。

要处理的模型,我认为你应该送行动控制器:here

this.sendAction('action', param1, param2); 

我会是这个样子,从模板:

{{my-component value1=value1 .... action="actionFromComponent" }} 

和Controller:

App.MyController = Ember.Controller.extend({ 
    actions: { 
     actionFromComponent: function(param1, param2) { 
      ..... 
     } 
    } 
}) 

我希望这可以帮助你!

+0

好点。这似乎假设模型保存将在页面的控制器中完成,对吧?该组件将包含在各种页面/控制器中。我希望控制器不必知道它,因为它与它们没有直接关系。我可以创建一个控制器,以某种方式加载该组件,这样它就可以自成一体了吗? (我试过这样做,它开始看起来很丑) –

+0

@JeremyGillick是的,你可以为你的组件声明一个显式的控制器,并通过使用'needs'数组来将它作为依赖关系放入任何其他控制器中:http:// emberjs .com/guides/controllers/dependencies-between-controllers/ – herom

+1

该组件是它自己的控制器。我试着用@herom指出的'needs'属性,但我不工作,我认为它不应该。组件与使用它们的上下文是隔离的,这意味着你可以在多个上下文中使用它们(只要你满足它的接口)。如果你喜欢,你可以把保存逻辑放在组件中,或者把它放在一个mixin中,你可以将它应用到使用它的控制器上(我更喜欢这个)。 – edpaez