从 Template.tmpl.helpers() 调用 Iron-Router RouteController 中的方

call method in Iron-Router RouteController from Template.tmpl.helpers() not working

本文关键字:RouteController Iron-Router 调用 Template tmpl helpers      更新时间:2023-09-26

每次调用 loadMoreClients 方法时,我都会尝试将新数据推送到我的 clients 数组中。发布需要此back_to参数,并知道如何处理它。 我的问题是我似乎无法从我的模板助手调用这些方法。

我登录了IronIron.controller到控制台,这两个都存在,并向我展示了我期望看到的内容。 我似乎找不到有关如何从模板助手访问Iron.controller()方法/属性的当前文档或示例

这是我的路由控制器代码:

ClientController = ApplicationController.extend({
action : function(){
    this.render(Router.current().route.getName())
},
data : function(){
    if( this.params._id ){
        return Clients.findOne({ _id:this.params._id })
    }
},
waitOn : function(){
    return [
        Meteor.subscribe('directory'),
        Meteor.subscribe('clients')
    ]
},
loadMoreClients : function(){
    this.months_back += 3
    this.back_to = moment().subtract(this.months_back,'months').startOf('day')
    this.clients.push(Meteor.subscribe('clients', {back_to:this.back_to, skip:this.clients.length}))
},
loadAllClients : function(){
    this.clients.push(Meteor.subscribe('clients', {back_to:this.start_of_time, skip:this.clients.length}))
},
// we'll use these properties to 'load more' client data
clients : [],
back_to : moment().subtract(3,'months').startOf('day'),
months_back : 3,
start_of_time : moment(new Date(0))
})

这是我的帮助程序代码:

Template.client_list.helpers({
clients : function(){
    var clients = []
    Iron.controller().clients.forEach(function(client){
        // ... some stuff here...
        clients.push(client)
    })
    return clients
},
earliestClientLoaded : function(){
    var controller = Iron.controller()
    return controller.clients[controller.clients.length - 1].createdAt
}
})
Template.client_list.events({
'click .btn-load-more' : function(e){
    e.preventDefault()
    Iron.controller().loadMoreClients()
},
'click .btn-load-all' : function(e){
    e.preventDefault()
    Iron.controller().loadAllClients()
}
})

我在对loadMoreClientsloadAllClients方法的Iron.controller()调用中收到undefined function错误。

我在这里做错了什么?

我已经改变了解决这个问题的方法,只需更新订阅以订阅早于当前加载日期的帖子。

它正在工作,尽管似乎应该有比在我想加载更多内容时必须waitOn订阅更好的方法。