在Meteor中重新初始化代码
Reinitializing code in Meteor
我今天开始为一个电子商务网站编写Meteor应用程序。这是我的basic.js
文件中的一些代码。
Router.route("/shop", function () {
this.layout("shop");
this.render("catalog");
});
当/shop
被渲染时,shop.js
内部的一些代码被执行:
Template.shop.rendered = function () {
if ($("figure").hasClass("selected")) {
var
productSelected = $("figure.selected"),
productPrice = productSelected.data("price"),
productTitle = productSelected.data("product"),
productLocation = productSelected.find("a").attr("href");
$(".product-title").html(productTitle);
$(".product-cost").html(productPrice);
$(".content__info__title--overview").find("a").attr("href", productLocation);
}
// Slideshow
var galleryItems = $(".content").children("section");
galleryItems.each(function () {
var container = $(this);
// Update slider when user clicks on the preview images
container.on("click", ".move-down, .move-up", function (event) {
event.preventDefault();
if ($(this).hasClass("move-down")) {
nextSlide(container);
} else {
prevSlide(container);
}
if ($(this).hasClass("selected")) {
var
productPrice = $(this).data("price"),
productTitle = $(this).data("product");
$(".product-title").html(productTitle);
$(".product-cost").html(productPrice);
}
});
});
// Next Slide
function nextSlide(container, n) {
var visibleSlide = container.find("figure.selected");
if (typeof n === "undefined") {
n = visibleSlide.index() + 1;
}
$("figure.selected").removeClass("selected");
$(".content__products figure").eq(n).addClass("selected").removeClass("move-down").prevAll().removeClass("move-down move-up").addClass("hide-up").end().prev().removeClass("hide-up").addClass("move-up").end().next().addClass("move-down");
}
// Previous Slide
function prevSlide(container, n) {
var visibleSlide = container.find("figure.selected");
if (typeof n === "undefined") {
n = visibleSlide.index() - 1;
}
$("figure.selected").removeClass("selected");
$(".content__products figure").eq(n).addClass("selected").removeClass("move-up hide-up").nextAll().removeClass("hide-up move-down move-up").end().next().addClass("move-down").end().prev().removeClass("hide-up").addClass("move-up");
}
});
现在,当应用程序加载时,这可以很好地工作,但当我访问不同的路线并返回时,shop.js
中的代码都不起作用。我不确定我是否做错了什么,但我希望能得到一些指点。
更改从该呈现的模板
Template.shop.rendered
至
Template.catalog.rendered
。
因为您要渲染的是catalog route
,而不是layout template
。
顺便说一句,我问的是流星版本,因为在新的1.0.4流星版本Template.shop.rendered = function () {}
被弃用了,现在我们使用Template.tabletsList.onRendered(function() {});
,试着运行流星更新。
Ethaan在评论中回答了我的问题。我只需要将Template.shop.rendered
更改为Template.catalog.rendered
。悲痛万分!
相关文章:
- 在Meteor中重新初始化代码
- 在jQuery Mobile中使用pageInit()初始化代码
- 无法使用我的代码(html/js/css)初始化网络摄像头
- 在使用函数作为构造函数时,我在初始化属性时卡住了这个运算符.我的代码如下
- JS:在一行代码中初始化并推送到多维数组?创建树结构
- 是否可以在一行代码中定义和初始化JavaScript中的多维数组
- 如果我想在每次测试之前初始化数据库,如何组织代码
- 如何简化用于初始化的 jQuery 代码
- 为什么下面的代码没有初始化我的 JavaScript 对象
- 用于脚本加载的预初始化jQuery代码不起作用
- 如何重构用于初始化和更新的冗余代码
- AngularJS:初始化控制器时运行代码
- 如何使用mocha运行一些初始化代码
- 初始化插件后执行jQuery代码
- 如何用HTML代码直接初始化javascript中的变量
- 在变量初始化时运行代码
- 在Ember.js中,我把控制器的初始化代码放在哪里?
- KnockoutJS:我应该如何处理繁重的小部件初始化代码
- 新手:检查表单初始化时是否选中了单选按钮.这个代码是什么意思
- 数据表:如何在表初始化代码中放入变量