我正在开发一个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>
标签切换到textarea的操作是应该在控制器中还是应该创建组件?
答案 0 :(得分:2)
您可能需要itemController
(see docs)
然后您可以在该项目控制器上拥有isBeingEdited
,并且在显示和编辑单个track
之间切换的操作也会在那里。
保存模型的操作将在route