我正在努力创建一个“车库特卖”页面,目前正在学习车把。
我正在尝试从其中一个属性的定义中调用一个函数,并将返回的值作为属性值。
我现在的设置是:
var lawnGarden = [{
title: "Lawn Mower",
price: 75.00,
img: "./img/lawnMower.jpg",
desc: "Great mower, kept in great condition, runs smooth.",
link: genLink(this.title);
}, {
title: "Hedge Clippers",
price: 25.00
}, {
title: "Shovel",
price: 10.00
}, {
title: "Post Hole Digger",
price: 20.00
}]
function genLink(title) {
var baseURL = "https://pensacola.craigslist.org/search/sss?sort=rel&query=";
return baseURL + title.replace(" ", "%20");
}
我还有这样做吗?或者更好的方式?
我应该提到我在nodeJS工作。
答案 0 :(得分:0)
您可以为每个条目类型创建一个类。
class LawnGardenEntry {
constructor(title, price, img, desc) {
this.title = title;
this.price = price;
this.img = img || "stockimg.png";
this.desc = desc || "default description";
this.link = this.genLink(title);
}
genLink(title) {
var baseURL = "https://pensacola.craigslist.org/search/sss?sort=rel&query=";
return baseURL + title.replace(" ", "%20");
}
}
var lawnGarden = [
new LawnGardenEntry(
"Lawn Mower",
75.00,
"./img/lawnMower.jpg",
"Great mower, kept in great condition, runs smooth."
),
new LawnGardenEntry("Hedge Clippers", 25.00),
new LawnGardenEntry("Shovel", 10.00),
new LawnGardenEntry("Post Hole Digger", 20.00)
];
您甚至应该为它创建一个工厂方法,并且另一个类可以更好地保存条目。它还取决于这些是如何生成的。
另外,您确实需要更好的genlink功能
答案 1 :(得分:0)
根据@Alexander O'Mara的链接帖子和他在下面的评论的建议,我已经将我的代码修改为:
var lawnGarden = [{
title: "Lawn Mower",
price: 75.00,
img: "./img/lawnMower.jpg",
desc: "Great mower, kept in great condition, runs smooth.",
}, {
title: "Hedge Clippers",
price: 25.00
}, {
title: "Shovel",
price: 10.00
}, {
title: "Post Hole Digger",
price: 20.00
}]
//Url Generation and Endcoding
for (i = 0; i < lawnGarden.length; i++) {
lawnGarden[i].link = genLink(lawnGarden[i].title);
}
function genLink(query) {
var uri = "https://pensacola.craigslist.org/search/sss?sort=rel&query=" + query;
return encodeURI(uri);
}
感谢您的评论和回答,当我最初发布这篇文章时,我不确定当我阅读错误日志时究竟是什么问题,因为这对于说出我的问题的最佳方式有点无知。
现在看来这是解决问题的最佳方法。