2014-02-19 6 views
0

필자와 필터에 문제가 있습니다. 필터를 만들면 해당 필터에 따라 데이터가 변경됩니다.각각에 대한 유성 필터

<select id="filter"> 
<option value="all">all</option> 
<option value="one">one</option> 
<option value="two">two</option> 
</select> 

{{#each datas}} 
<span class="badge">{{Name}}</span> 
{{/each}} 

Template.mytemp.created = function(){ 
Session.set("activefilter", "all"); 
}; 

Template.mytemp.datas = function(){ 
    var ac = Session.get("activefilter"); 
    var result = new Array(); 
    if(ac != undefined){ 
    var data = RawData.find({filter:ac}).fetch(); 

     for(var ii = 0; ii < data.length;ii++){ 
     var nData = NextData.findOne({_id : data[ii].Next_ID}); 
     result[ii] = { 
      Name : nData.Name 
     }; 
     } 
    return result; 
    } 
}; 

은이 같은 이벤트 핸들러를 생성 :

Template.mytemp.events({ 
    'change #filter':function(){ 
    Session.set("activefilter",$('#filter').val()); 
    } 
}); 

마다 난 필터 변경이 생긴 것도없고, 각 datas 변경되지. 필터를 변경하면 데이터를 업데이트하는 방법을 알려주십시오.

답변

1

커서를 수동으로 반복하면 (each 등) 커서를 되감기하여 재설정해야합니다. forEach, map, 또는 fetch 방법 만 커서 한 번 호출 할 수있는 문서 http://docs.meteor.com/#rewind

에서 촬영. 커서의 데이터에 두 번 이상 액세스하려면 rewind을 사용하여 커서를 재설정하십시오.

따라서이 같은 일을 할 수 있습니다

Template.mytemp.datas = function(){ 
    var ac = Session.get("activefilter"); 
    var result = new Array(); 
    if(ac != undefined){ 
    var cursor = RawData.find({filter:ac}); 
    var data = cursor.fetch(); 

     for(var ii = 0; ii < data.length;ii++){ 
     var nData = NextData.findOne({_id : data[ii].Next_ID}); 
     result[ii] = { 
      Name : nData.Name 
     }; 
     } 

    cursor.rewind(); //we rewind our cursor here so that it can be iterated again from the beginning when needed 

    return result; 
    } 
}; 
+0

덕분에 당신의 대답을 유성에 미안 난 아직 새로운 세르칸을, 내 경우에는 cursor.rewind()를 사용하는 방법, 당신은 마음이 할 수 없다면 당신은 예제 코드를 제공합니까? – yozawiratama

+0

문제 없음, 방금 예제를 추가했습니다. –

+0

whoaaa 작동합니다. 고마워요. 정말 고마워, 나는 거의 모든 문서를 읽지 않는다. 만약 내가 이것에 대해 말하지 않는다면 나는 잃어 버리고 포기할 것이다. 다시 한 번 감사드립니다 : D – yozawiratama

관련 문제