Dopdownlist se rellena con valores limitados en lugar de valores de la colección total

Tengo una lista desplegable como filtros y luego están las publicaciones totales con un límite de visualización de solo 4 a la vez, a menos que se haga clic en el botón Cargar más para mostrar otros 4 registros. El problema es que la lista desplegable también está cargando valores solo de los primeros 4 registros.

Aquí esta mi publicación

Meteor.publish('allJobs', function(limit){
 if(!limit){
 return Jobs.find();
}
 return Jobs.find({}, {limit: limit});
});

mi suscripción principal en el controlador

  waitOn: function() {
  return Meteor.subscribe("allJobs",4,this.findOptions());
  },

ayudantes para la plantilla

Template.jobsList.helpers({
'allJobs': function(){
  var filter ={};
  var category = Template.instance().selectedCategory.get();
  var city = Template.instance().selectedCity.get();
  var jtype = Template.instance().selectedJobType.get();
  if(jtype)
    filter.jtype = jtype;
  if(city)
    filter.city = city;
  if(category)
    filter.ccategory = category;
  return Jobs.find(filter);
     },
  'moreResults': function(){
    return !(Jobs.find().count() < Session.get("jobsLimit"));
  }
});

Template.jobsList.onRendered(function(){
    Session.setDefault("jobsLimit", 4);
    this.autorun(function(){
        Meteor.subscribe("allJobs", Session.get("jobsLimit"));
    });
});

Traté de hacer otra suscripción para esto, pero no funcionó. Por favor ayuda con una mejor solución.

Modelo

<template name="jobsList">
  <div class="col s12 filter-holder">
        <div class="col m4 s4 filter-box">
          {{> categoryFilter}}
        </div>
        <div class="col m4 s4 filter-box">
         {{> cityFilter}}
        </div>
</div>

<div class="col s12">
  <ul class="collection" id="listings">
    {{#each allJobs}}
    <li>
      {{> jobItem}}
   </li>
   {{/each}}
  </ul>
  {{#if moreResults}}
  <button class="load-more" id="showMoreResults" type="submit">Load More
    <i class="mdi-content-send right"></i>
  </button>
  {{/if}}
</div>
</template>

Por favor ayuda, estoy atrapado en esta situación

Archivo js actualizado

var limit = new ReactiveVar;

var filterAndLimitResults = function (cursor, limit) {

if (!cursor) {
    return [];
}

var chosenCategory = limit.get("chosenCategory");

var raw = cursor.fetch();

// filter category
var filtered = [];
if (!chosenCategory || chosenCategory == "") {
    filtered = raw;
} else {
    filtered = _.filter(raw, function (item) {
        return item.category === chosenCategory;
    });
}

if (limit) {
    filtered = _.first(filtered, limit);
}
return filtered;
};

// plantilla creada función

Template.jobsList.onCreated(function(){
limit.set(4);
limit.set("chosenCategory");
});

// Función auxiliar de plantilla

Template.jobsList.helpers({
  "displayedJobs": function() {
  return filterAndLimitResults(Jobs.find(), (limit.get()));
   },
  'moreResults': function(){
    return !(Jobs.find().count() < limit.get());
      }
    });

Filtro de clic desplegable

Declarando en función renderizada

  Template.jobsList.onRendered(function(){
  limit.set(4);
  chosenCategory.set();
});

Y el evento de clic es el siguiente

 "click .categoryselection": function(e, t){
        e.preventDefault();
      chosenCategory.set(chosenCategory.get());

Respuestas a la pregunta(2)

Su respuesta a la pregunta