javascript - meteor ,铁 :Router Passing Multiple Properties on Router. 去

标签 javascript meteor routes iron-router

我的困境是我想将多个对象属性传递给 Meteor 中的 iron:router 路由。原因是我想向它传递一个属性来命名我的 url 和一个属性来查找一个集合项。它们彼此完全独立,我不能使用 url 属性,因为它不是集合项中的值。这就是我所拥有的:

Template.items.events({
'click': function () {
    itemName = this.name.replace(/ /g,'')
    Router.go('itemDetails', {itemName: itemName})
    }
});

问题是尽管路由器处理得很好并将我发送到正确的 url,但我无法使用 itemName 找到我正在寻找的集合项目对象(假设这是不可能的)。

Router.route('/items/:itemName', {
    name: 'itemDetails', 
    data: function() {return Items.findOne({name: this.params.itemName})}
});

上面的 Router 配置不会返回任何东西,因为 name != this.params.itemName 对于任何对象。

我试过传递 this 对象,或创建具有多个属性的对象,但 iron:router 没有。

感谢任何帮助,谢谢。

编辑 #1:为了帮助进一步解释问题,我的问题与路由到在 URL 中使用多个 id 的页面相同。例如,我将如何将属性传递给 iron:router 以填充 :_id:itemId 属性?

Router.route('items/:_id/:_itemId', {
    name: 'detailDetails',
    data: function() {...}
});

编辑 #2:我特别想做的是将两个属性传递给 iron:router 并将其中一个附加到 URL,另一个用于路由的数据属性以返回一个集合项.示例:

....
    Router.go('itemDetails', {_id: itemBeingPassedId, itemName: nameToBeAppendedToURL})
....

Router.route('/items/:itemName', {
    name: 'itemDetails',
    data: function(){return Items.findOne(_id)
});

每当我尝试这样做时,它都会说 _id 未定义。所以基本上,我如何将属性传递给 data 而不是将它作为 URL 的一部分并使用 this.params

最佳答案

问题是如何将多个参数传递给 Router.go?只需将它们全部放入第二个参数的对象中即可:

Router.go('itemDetails', {_id: 'foo', '_itemId': bar});

编辑:

好的,如果你想将任意值传递给url,你可以使用查询参数:

Router.go('itemDetails', {itemName: 'foo'}, {query: 'id=bar'});

虽然 id 仍然在 url 中,它看起来像这样:

http://example.com/items/foo?id=bar

你可以像这样检索它:

Router.route('/items/:itemName', {
    name: 'itemDetails',
    data: function(){
        return {
            item: Items.findOne(this.params.query.id),
            itemName: this.params.itemName
        };
    }
);

关于javascript - meteor ,铁 :Router Passing Multiple Properties on Router. 去,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26851878/

相关文章:

javascript - 从组件 VM 中的主 Vue.js 实例访问变量

reactjs - 带有下一个路由的响应式(Reactive)搜索的 URLParams

javascript - angularJS 路由 templateUrl

node.js - 动态 express.static() 文件夹路径

javascript - 为什么我的 <marquee> 中的 link/span 标签在 Firefox 中出现在多行上?

javascript - 在 Extjs 中显示错误消息的最佳方式是什么?

JavaScript 异步函数不是非阻塞的

cordova - 如何防止 Meteor/Cordova 应用程序连接到 10.0.2.2? (为什么应用程序会连接到那里?)

backbone.js - 如何将主干 View 连接到 meteor Handlebars 模板?

node.js - 让 Blade 在 Windows 8 上与 Meteor 配合使用