2015-03-25 105 views
0

我今天開始爲電子商務網站編寫Meteor應用程序。這是我的basic.js文件中的一些代碼。在Meteor重新初始化代碼

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中的代碼均無效。我不確定我是否做錯了什麼,但我會喜歡一些指針。

+0

如果將「Template.shop.rendered」更改爲「Template.catalog.rendered」,會發生什麼情況?你也可以在Meteor'shell meteor --version'上運行這個工作。 – Ethaan 2015-03-25 02:56:13

+0

將'shop'改成'catalog'工作!是。謝謝@Ethaan!我正在運行Meteor 1.0.3.2和Meteorite 0.9.3版本。 – 2015-03-25 03:02:54

回答

3

從這個

Template.shop.rendered 呈現模板更改爲

Template.catalog.rendered

由於您要渲染catalog route而不是layout template

順便說一句我問的是流星的版本,因爲新的1.0.4流星版本Template.shop.rendered = function() {}得到了棄用,而現在我們使用Template.tabletsList.onRendered(function() {});,嘗試運行流星更新。

+1

我跑了更新,我的代碼仍然有效。不過,我會更新到新的語法。 – 2015-03-25 03:34:54

0

Ethaan在評論中回答了我的問題。我只需要將Template.shop.rendered更改爲Template.catalog.rendered。好悲傷!

+0

opps我剛剛發佈了一個答案哈哈 – Ethaan 2015-03-25 03:08:48

+1

這發生在我身上比我更願意承認。把這個交給你的記憶!它會再次發生。 – 2015-03-25 03:24:14