我有一个Ember.ArrayController没有未分类的内容.
我想知道是否可以在不使用新属性的情况下对ArrayController的内容进行排序.
我当然可以创建一个新属性:
App.MyArrayController = Em.ArrayController.extend({
mySortMethod: function(obj1, obj2) {
// some code here
},
updateSortedContent: function() {
var content = this.get('content');
if (content) {
var sortedContent = content.copy();
sortedContent.sort(this.mySortMethod);
this.set('sortedContent', sortedContent);
}
}.observes('content')
});
Run Code Online (Sandbox Code Playgroud)
但我希望有一种更好的方法不会重复内容.
我有一个ArrayController定期更新的.它有一个sorted计算属性,可以保持秩序.我正在尝试使用CollectionView它content绑定到sorted属性的属性,但它不会以正确的顺序呈现它们.演示
我显然做出了错误的假设,即在content和childViews财产之间保持秩序.这样做的正确方法是什么?
把手:
<script type="text/x-handlebars" data-template-name="item">
id {{view.content.id}}
</script>
<script type="text/x-handlebars">
<ul>
{{collection
contentBinding="App.itemController.sorted"
itemViewClass="App.ItemView"
}}
</ul>
</script>
Run Code Online (Sandbox Code Playgroud)
JavaScript:
?App = Ember.Application.create({
ready: function(){
// add a new object with a random id
// every second
setInterval(function(){
var id = Math.round(Math.random() * 100),
obj = Em.Object.create({ id: id });
App.itemController.pushObject(obj);
}, 1000);
}
});
// Collection Item View
App.ItemView = Em.View.extend({
tagName: "li", …Run Code Online (Sandbox Code Playgroud)