发布 Angular-Meteor Meteor.publishComposite

问题描述 投票:0回答:1

运行时

helper
将值存储在变量
verCandidatos.postulados
中。

一旦我获得了信息,我需要获取一个链接的文档(使用函数

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 客户端

my-app/imports/ui/components/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

my-app/imports/ui/components/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

my-app/imports/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:

my-app/imports/api/vacantes/server/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,
                                }
                            });
                        }
                    }
                ]
            };
    });
}

有什么想法吗? 谢谢。

meteor publish angular-meteor
1个回答
1
投票

ISSUE
位于
html
解决方案已检测到
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>

感谢您的阅读。 我希望你会有用。

© www.soinside.com 2019 - 2024. All rights reserved.