view/state 逻辑应该放在 Ember 的什么地方?

Where should view/state logic live in Ember?

我正在开发一个 Ember 应用程序,我很难理解我正在构建的功能的逻辑应该放在哪里。功能是这样的,我们正在显示一个可以编辑标题的项目列表。期望的效果是显示文本的区域默认是一个 <p> 标签,但是当单击编辑按钮时,标题变成文本字段,因此用户可以编辑标题并保存它。

这是标题的当前模板,

{{#if track.isBeingEdited}}
  {{ input value=track.title }}
{{else}}
  {{ track.title }}
{{/if}}

我正在考虑这样的按钮,

{{#if track.isBeingEdited}}
  <button {{action updateTitle}}>Save Title</button>
{{else}}
  <button {{action toggleEditState}}>Edit Title</button>
{{/if}}

当前模型有 isBeingEdited 属性 默认设置为 false。我正在考虑将动作放在控制器中,这会将模型的 isBeingEdited 属性 的值更改为 true,或返回 false 并触发保存新标题。

我不确定 isBeingEdited 是否应该在控制器中,它是一个 Ember.ArrayController。此外,单击按钮并将 <p> 标记切换到文本区域的操作应该在控制器中还是应该创建一个组件?

您可能需要 itemController (see docs)

然后您可以将 isBeingEdited 放在那个项目控制器上,并且在显示和编辑单个 track 之间切换的操作也会出现在那里。

保存模型的操作将在 route

上进行