2016-10-14 16 views
0

При запуске helper значения значений сохраняются в переменной verCandidatos.postulados.Проблема Angular-Meteor Meteor.publishComposite

Как только я получу информацию, мне нужно получить документ, который связан (с использованием функции ng-init="candidato = la postulado.candidato()), которая работает на helper из файла: collection.js.

Иногда html показывает свойство: {{candidato.nombre}}, {{candidato.apellidos}} и {{candidato.sexo}} правильно, а иногда появляется пустым, почему?

Очень странно, как bug или что-то в этом роде. Как это возможно?

Информация получена, потому что ng-repeat работает и показывает элементы.

Ниже publishComposite(), collection.js, html и js клиент

HTML клиент

мое-приложение/импорт/щ/компоненты/vacantes/verCandidatos/ verCandidatos.html

<div ng-repeat="postulado in verCandidatos.postulados"> 
    <div ng-init="candidato = postulado.candidato();"> 
      {{candidato.nombre}} 
      {{candidato.apellidos}} 
      {{candidato.sexo}}    
    </div> 
</div> 

JS в клиенте

мои-приложение/импорт/UI/компоненты/vacantes/verCandidatos/ verCandidatos.js

imports ... 


class VerCandidatos { 
    constructor($scope, $reactive, $stateParams) { 
     'ngInject'; 
     $reactive(this).attach($scope); 
     this.vacanteId = $stateParams.vacanteId; 
     this.subscribe('vacantes.candidatosOseleccionados',()=> [{vacanteId: this.vacanteId}, {estado: 1}]); 
     this.helpers({ 
      postulados(){ 
       return Postulaciones.find(); 
      } 
     }); 

    } 
} 

collection.js

мое-приложение/импорт/API/postulaciones/ collection.js

imports... 

export const Postulaciones = new Mongo.Collection('postulaciones'); 

Postulaciones.deny({...}); 

Postulaciones.helpers({ 
    candidato(){ 
     return Candidatos.findOne({_id: this.candidatoId}); 
    } 
}); 

publish.js:

мои-приложение/импорт/API/vacantes/сервер/ publish.js

imports... 

if (Meteor.isServer) { 
    Meteor.publishComposite('vacantes.candidatosOseleccionados', function (vacanteId, estado) { 
     const selector = {$and: [estado, vacanteId]}; 
      return { 
       find: function() { 
        return Postulaciones.find(selector); 
       }, 
       children: [ 
        { 
         find: function (postulacion) { 
          return Candidatos.find({_id: postulacion.candidatoId}, { 
           fields: { 
            nombre: 1, 
            apellidos: 1, 
            sexo: 1, 
           } 
          }); 
         } 
        } 
       ] 
      }; 
    }); 
} 

Любые идеи? - Спасибо,

ответ

1

The ISSUE был в html Раствор deteted ng-init и позвонить непосредственно в helpers внутри collection.js, другие файлы (js in client, collection.js, publish.js) не изменять.

html файл выглядит следующим образом:

<div ng-repeat="postulado in verCandidatos.postulados"> 
     {{postulado.candidato().nombre}} 
     {{postulado.candidato().apellidos}} 
     {{postulado.candidato().sexo}}    
</div> 

Спасибо за чтение. И я надеюсь, что вы будете полезны.