0

나는 todos의 목록을 가지고 있으며 나는 그들과 관련된 tag 속성을 가지고있다. 보기에는 "태그로 정렬"단추가 있습니다. 해당 버튼을 누르면 컬렉션이 태그별로 정렬됩니다. 지금 아무 일도 일어나지 않고 있습니다. 아래는 코드입니다. 뭐가 문제 야?SproutCore Collection Sorting

In todos.js I have: 
Todos.SortingView = SC.TemplateView.extend({ 
    sortBinding: 'Todos.todoListController.sortTodos' 
}); 

and in todoListController, I have: 
    sortTodos: function() { 
    Todos.store.find(Todos.Todo).sortProperty('tag'); 
    } 

and in the handlebars view I have: 
{{#view Todos.SortingView id="stats"}} 
    {{#view SC.Button classBinding="isActive" target="Todos.todoListController" action="sortTodos"}} 
    Sort By Tag 
    {{/view}} 
{{/view}} 

{{#collection SC.TemplateCollectionView contentBinding="Todos.todoListController" itemClassBinding="content.isDone"}} 
    {{view Todos.MarkDoneView}} - Tag - {{content.tag}} 
{{/collection}} 
+0

귀하의 ListController는 무엇입니까? – hvgotcodes

+0

Todos.todoListController SC.ArrayController.create = ({// 빈 어레이와 어레이 컨트롤러 초기화 함량.] // 함수 sortTodos : 함수() { Todos.store.find (왜 그렇게을 .Todo) .sortProperty ('tag'); }, // functions }); –

답변

1
sortTodos: function() { 
    Todos.store.find(Todos.Todo).sortProperty('tag'); 
} 

가 있어야한다 : 이제

sortTodos: function() { 
    this.set('orderBy', 'tag'); 
} 

당신이 항목을 추가하는 경우, 당신은 todoL에서 arrangedObjects 아니라 content


createTodo: function(title) { 
    // var todo = Todos.Todo.create({ title: title });  
    var todoExists = this.findProperty('title', title).length > 0; 
    if (!todoExist) { 
     Todos.store.createRecord(Todos.Todo, { title: title }); 
     // this.pushObject(todo); 
    } 
} 
+0

우수합니다. 정말 고마워요. 한 번 더 질문 할 때마다 새 항목을 추가하고 컬렉션에 하나 더 추가합니다. 그래서 저는 같은 todos를 두 번 봅니다. –

+0

보기에서 무엇인가 잘못하고 있습니까? 내 전체 핸들 바 템플릿은 다음과 같습니다. –

+0

Todos

{{#view Todos.CreateTodoView}} {{/}}도 {{#view의 Todos.SortingView 자료 = "통계"}} {{ #view SC.Button classBinding = "이 isActive '타겟 ="Todos.todoListController "조치 ="sortTodos "태그 }} 의해 정렬 {{/보기}} {{/보기}} {{#collection SC.TemplateCollectionView contentBinding ="Todos.todoListController "}} {{보기 Todos.MarkDoneView}} - 태그 - {{content.tag}} {{/ collection}} –

0

addObject를 사용하여 사용해야합니다 istController, 처음에는 데이터 저장소에서 컨트롤러의 내용을로드했다고 가정합니다.

sortTodos: function(){ 
var query= SC.Query.local('Todos.Todo', {orderBy: 'tag'}); 
Todos.todoListController.set('content',Todos.store.find(query)); 
}