2013-11-01 3 views
0

Как установить дополнительные данные в функции действия в Meteor Application, который использует IronRouter? См комментарии в emailWelcome и emailContract функций ниже ...Как установить данные в действии с помощью IronRouter на Meteor?

Код:

EmailController = RouteController.extend({ 
    template: 'emailPage', 

    waitOn: function() { 
    return [ 
     Meteor.subscribe('customers'), 
    ]; 
    }, 

    data: function() { 

    var request = Requests.findOne(this.params._id); 
    if (!request) 
     return; 

    var customer = Customers.findOne({'_id': request.customerId}); 
    if (!customer) 
     return; 

    return { 
     sender: Meteor.user(), 
     recipient: Customers.findOne({_id:Session.get('customerId')}) 
    }; 
    }, 

    emailWelcome: function() { 
    // Set var in the context so that emailTemplate = 'welcomeEmail' here 
    this.render('emailPage'); 
    }, 

    emailContract: function() { 
    // Set var in the context so that emailTemplate = 'contractEmail' here 
    this.render('emailPage'); 
    } 
}); 

ответ

2

Вы можете получить доступ к данным с this.getData() в своих функций действий:

emailWelcome: function() { 
    var data = this.getData(); // get a reference to the data object 
    data.emailTemplate = 'welcomeEmail'; 
    this.render('emailPage'); 
}, 

emailContract: function() { 
    var data = this.getData(); // get a reference to the data object 
    data.emailTemplate = 'contractEmail'; 

    this.render('emailPage'); 
} 
  • быть осторожны, чтобы не для вызова this.data(), поскольку это приведет к восстановлению данных вместо того, чтобы получить ссылку на уже сгенерированные данные объект.
  • также быть осторожным, чтобы не называть this.setData(newData) в действии, как аннулирует старый объект данных, инициируя реактивности перезарядку и lead to an infinite loop!
Смежные вопросы