1

对于我的应用程序中的某些页面,我想启用可打印模式,其中当 URL 参数包含?print=true. 目前,我尝试了一种解决方法,包括通过 Iron-router 将 URL 参数作为数据上下文发送。

    this.route('permitsList', {
        path: '/permits/',
        path: '/',
        waitOn: function(){
            return Meteor.subscribe('openPermits');
        },
        data: function(){
            return this.params;
        }
    });

伴随着一个全局把手帮助器,用于适当地显示和隐藏元素。

在这种情况下,当 URL 包含 时?print=true,显示和隐藏适当的元素是微不足道的。然而,这个解决方案有两个主要问题。首先,我希望实现此可打印视图的某些页面已经具有数据上下文。覆盖数据上下文是不可行的,并且将两个数据上下文都嵌入到一个更大的对象中是相当恶心的。第二个问题是我希望可打印视图不仅适用于模板本身,而且适用于呈现页面的周围布局模板,以便删除无关的标题等。

是否有任何合理的方法可以访问 Spacebars 助手内部的 URL 参数,而无需通过 Iron Router 在数据上下文中指定参数?

4

1 回答 1

1

总结为答案:即使没有流星也可以访问查询参数

if ( window.location.search.indexOf( '?print=true' ) > -1 ) { ... } 

window.location 返回当前的 URL,window.location.search 只将查询参数作为字符串。

于 2014-06-09T08:08:16.503 回答