大家好,感谢您抽出宝贵时间回答我的问题。
我将解释我尝试过的方法,而不是提供代码,我将简化我正在尝试解决的问题。
两种型号:
Team:
hasMany ProjectTeams
和
ProjectTeam:
belongsTo Team
value: int
所有这一切都发生在TeamRoute和team.hbs模板中。
我遍历特定团队的所有projectTeams,并渲染一个textpoint,其value属性绑定到ProjectTeam模型的value属性(这样当其中一个更新时,更改会传播到另一个。)< / p>
所有项目团队都在<table>
呈现,每个<tr>
对应ProjectTeam
现在,我想按照以下标准为每个团队排序ProjectTeams:
值为0的所有项目团队都应该转到表格的底部。其余的应该在顶部。
这意味着每当我将0输入其中一个空的元素或其中包含其他值时,此记录应自动转到底部,相反,如果我向最初为a的字段添加值值为0,应该移到表格的上半部分(也就是页面应该被重新渲染)。
我做的是我决定向模板发送有序集合。我在TeamController中订购集合,如下所示:
App.TeamController = Ember.ObjectController.extend(
sortProps: ["value"]
sortedArray: Ember.computed.sort("content.projectTeams", "sortProps")
)
然后在模板中我得到了:
{{#each projectTeams itemController='projectTeam'}}
<td>
{{view Ember.TextField content=this value=value}}
</td>
{{/each}}
当初始加载页面时,projectTeams正确排序,这意味着值为0的那些位于表的底部。但是,每当我尝试更改其中任何一个的值时,单击的字符将被注册(显示在屏幕上),并且焦点将从文本字段中丢失。我怀疑这是因为,由于对原始数组进行了更改,因此调用控制器(TeamController)并且它正在使用数组。此外,内容在更改发生后没有重新排序,这非常奇怪,因为我认为焦点问题是由于集合被重新排序的事实!...
我的问题是,是否有人可以提供一个jsfiddle,在团队模板中列出projectTeams,每当更改任何projectTeams的值时,整个模板都会被正确地重新呈现?
非常感谢!