gpt4 book ai didi

javascript - 铁路由器中的多个 waitOn 不起作用

转载 作者:行者123 更新时间:2023-12-02 17:16:36 25 4
gpt4 key购买 nike

我有一个订阅购物车出版物的全局 waitOn。

但是,在购物车页面上,我想显示购物车中的商品列表,购物车有一个带有listingIds的对象的line_items数组。

所以我还需要订阅购物车页面上的列表才能显示它们。

这是我到目前为止所拥有的

Router.configure({
layoutTemplate: "layout",
loadingTemplate: "loading",
waitOn: function(){
if(Session.get("cartId"))
return Meteor.subscribe("cart", Session.get("cartId"));
}
});

购物车路线

this.route("cart", {
path: "/cart",
waitOn: function(){
if(Session.get("cartId")){
var line_items = Carts.findOne(Session.get("cartId")).line_items;
var ids = [];
for(var i = 0; i < line_items.length; i++){
ids.push(line_items[i].listingId);
}
return Meteor.subscribe("cartItems", ids);
}

}
});

我收到错误无法读取未定义的属性“line_items”。我认为发生这种情况是因为它尝试在购物车订阅之前进行订阅。

有办法解决这个问题吗?

最佳答案

您的 waitOn 函数假设 Carts.findOne(Session.get("cartId")) 始终返回某些内容。

最初,当 Meteor 加载时,您的数据尚未准备好,您需要考虑到这一点。您需要首先检查购物车是否存在。

var cart = Carts.findOne(Session.get("cartId"))

if(!cart) return false;

var line_items = cart.line_items;

虽然我不确定您使用 waitOn 处理程序的方式,因为返回值必须始终是订阅,您还需要处理如果上述 Carts.findOne() 返回 null,并且如果 Session.get("cartId") 也是 null

关于javascript - 铁路由器中的多个 waitOn 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24392040/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com