Pergunta

No meu meteoro, recomendo o seguinte manipulador, retornando um "colaborador" registro:

Template["IntroductionWizard_Step_1"].helpers({
  contributor: function(n) {
    return ContributorCollection.findOne({contributorName: ""});
  }
});

Este registro está sendo usado em um reativa modelo:

<input type="text" id="name" name="name" class="form-control-element" value="{{contributor.contributorName}}" 

Como eu entendo, o motivo para esta modelo para registar as alterações para que este registro é porque veio de um reativo de origem.O que eu queria saber é se ele poderia fazer sentido criar uma real Contribuinte objeto, e o retorno que, em vez de apenas um registro.Mas, se eu fosse fazer isso, este objeto não seria observado para as alterações, ou seria ele?Outra palavras, a mais tradicional abordagem orientada a objeto ser usado com meteoro, tendo como Modelo de objetos observáveis e reativa (duas vias de ligações) como os registros de Coleta?

Foi útil?

Solução

Você pode fazer o que quiser – Javascript é um protótipo com base, por isso é o suficiente para obter o direito de protótipo e de modificá-lo.

Para melhorar o comportamento do elemento de coleção, você precisa usar transform método:

Contributor = function(doc) {
  _.extend(this, doc); // initialize object with contents of doc
  ...
};

Contributors = new Meteor.Collection('contributors', {
  transform: function(doc) {
    return new Contributor(doc);
  },
});

Agora você pode adicionar métodos para o contribuinte do protótipo:

_.extend(Contributor.prototype, {
  someFunction: function() {...},
  otherFunction: function() {...},
  ...
});

Se você desejar ajustar os métodos de coleta, é ainda mais simples:

Contributors._findOne = Contributors.findOne;

Contributors.findOne = function() {
  var contributor = Contributors._findOne.apply(this, arguments);
  if(!contributor) {
    // initialize and save new contributor
    ...
  }
  return contributor;
};

Com essas técnicas você pode injetar o comportamento desejado para a recolha e seus elementos.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top