Tôi muốn có thể sắp xếp một số ArrayController
có nội dung phát sinh từ truy vấn dữ liệu ember. Thật không may, hỗn hợp sortProperty
dường như không hoạt động trong trường hợp này.Sắp xếp một ArrayController được hỗ trợ bởi Ember-Data thông qua sortProperty mixin
Tôi muốn để có thể làm như sau:
App = Ember.Application.create();
App.store = DS.Store.create({ revision: 4});
App.Item = DS.Model.extend({
id: DS.attr('string'),
name: DS.attr('string')
});
App.store.createRecord(App.Item, {id: '4', name: 'banana' });
App.store.createRecord(App.Item, {id: '2', name: 'apple'});
App.store.createRecord(App.Item, {id: '6', name: 'spaghetti'});
App.ItemsController = Ember.ArrayController.create({
content: App.store.findAll(App.Item),
sortProperties: ['name']
});
Với phiên bản mới nhất của Ember
và Ember dữ liệu, điều này sẽ cho kết quả:
[ id: 4, name: banana ]
[ id: 2, name: apple ]
[ id: 6, name: spaghetti ]
Vấn đề ở đây là rằng App.store.findAll()
trả lại một RecordArray
có nội dung không chỉ đơn giản là một mảng của App.Item
trường hợp (trong trường hợp này, nội dung là [2, 3, 4])
Để thực sự có được bàn tay của tôi trên các trường hợp tôi cần phải sử dụng một cái gì đó như objectAt()
. Nhưng ngay cả khi tôi trích xuất các trường hợp App.Item
từ RecordArray
và đổ chúng vào một mảng thông thường, mọi thứ không hoạt động như mong đợi.
Tôi có thiếu cách rõ ràng để thực hiện việc này hay đây chỉ là trạng thái hiện tại của khung công tác? Tôi không muốn sao chép tất cả các mô hình của tôi như là các đối tượng đơn giản chỉ để sắp xếp chúng.
EDIT:
tôi xung quanh vấn đề này bằng cách làm riêng của tôi ArrayController
. Tuy nhiên, sẽ tốt hơn nếu mọi thứ hoạt động như trên.
EDIT # 2:
Original tay lái mẫu: (. Ngoài ra, tôi đã sử dụng một tài sản thay vì sortProperties
trong mã của tôi trên sortProperty
, nhưng đó chỉ là một lỗi đánh máy)
<script type="text/x-handlebars">
{{#each App.ItemsController.content }}
<p>[ id: {{id}}, name: {{name}} ]</p>
{{/each}}
</script>
Và vâng, nếu một thay vì sử dụng
<script type="text/x-handlebars">
{{#each App.ItemsController.arrangedContent }}
<p>[ id: {{id}}, name: {{name}} ]</p>
{{/each}}
</script>
Sau đó chúng ta có được chính xác những gì chúng ta muốn:
[ id: 2, name: apple ]
[ id: 4, name: banana ]
[ id: 6, name: spaghetti ]
Tôi xin lỗi, bạn đã không thực hiện một đặc biệt Tôi nghĩ rằng có một vấn đề nhỏ mà đôi khi bạn phải liên kết với giá trị 'arrangContent' của' ArrayController' để có được các đối tượng được sắp xếp chính xác. –