Quantcast
Viewing all articles
Browse latest Browse all 4830

Ember.computed.sort property not updating

@ManuZenou wrote:

Hi Guys,

I've been cracking my head for the last several days, trying to understand what am I doing wrong.
I'm implementing an infrastructure of lists for my app, which can include paging/infinite scroll/filtering/grouping/etc. The implementation is based on extending controllers (not array controllers, I want to be Ember 2.0 safe), with a 'content' array property that holds the data.

I'm using Ember.computed.sort for the sorting, and it's working, but i have a strange behaviour when i try to change the sorter. the 'sortedContent' is not updating within the 'displayContent', even though the 'sortingDefinitions' definitions are updated.

This causes a weird behaviour that it will only sort if I "sort" it twice, as if the sorting was asynchronous.

I am using Ember 1.5 (but it also happens on 1.8)
(attaching a snippet of code explaining my problem)

sortingDefinitions: function(){
	var sortBy = this.get('sortBy');
	var sortOrder = this.get('sortOrder') || 'asc';
	
	if (_.isArray(sortBy)) {
		return sortBy;
	}
	else {
		return (sortBy ? [sortBy + ':' + sortOrder] : []);
	}
}.property('sortBy', 'sortOrder'),

sortedContent: Ember.computed.sort('content', 'sortingDefinitions'),




displayContent: function() {
	var that = this;
	var sortBy = this.get('sortBy');
	var sortOrder = this.get('sortOrder');
	var list = (sortBy ? this.get('sortedContent') : this.get('content'));

	var itemsPerPage = this.get('itemsPerPage');
	var currentPage = this.get('currentPage');
	var listItemModel = this.get('listItemModel');

	return list.filter(function(item, index, enumerable){
		return ((index >= (currentPage * itemsPerPage)) && (index < ((currentPage + 1)  * itemsPerPage)));
	}).map(function(item) {
		var listItemModel = that.get('listItemModel');
		if (listItemModel) {
			return listItemModel.create(item);
		}
		else {
			return item;
		}
	});
	
}.property('content.length', 'sortBy', 'sortOrder', 'currentPage', 'itemsPerPage')

Thanks in advanced,
Manu

Posts: 7

Participants: 3

Read full topic


Viewing all articles
Browse latest Browse all 4830

Trending Articles