2015-06-10 37 views
0

我有一個由Blaze渲染的模板,因爲我有一個創建的着陸頁,然後當用戶點擊註冊按鈕時將其移除,它將它帶到Blaze呈現的另一個模板。如何在使用blaze渲染的新模板上實例化事件偵聽器?

的HTML是隻是一個div漂亮空白模板

<head> 
    <title>Perform</title> 
</head> 

<body> 
<div id="template"> 
</div> 

</body> 

下面是加載虛擬第一個模板。

<template name="first"> 
    <button id="first_button">Click to jump to the next template</button> 
</template> 

這被載入

<template name="second"> 
    <button id="second_button">This button is not wired to an event</button> 
</template> 

我有所有的JavaScript在客戶端上運行一個文件加載第二個(虛擬)模板:

var currentView; 
var templateContainer; 
$(document).ready(function() { 

    templateContainer = document.getElementById('template'); 

    // This renders the first template. All events are currently working 
    currentView = Blaze.render(Template.first, templateContainer); 
}); 

Template.first.onDestroyed(function() { 
    // This console.log is firing 
    console.log("Destroyed first template"); 
}); 

Template.first.events({ 
    'click #first_button': function() { 
    // Remove the first template with Blaze 
    Blaze.remove(currentView); 

    // Render the second template 
    currentView = Blaze.render(Template.second, templateContainer); 
    } 
}); 


Template.second.onCreated(function() { 
    // This console.log is firing when the 'second' template is created 
    console.log("Hello! I've been created"); 
}); 
// The second template is actually a form I'd like to submit. Form omitted for brevity 
Template.second.events({ 
    'submit #second_button': function(e, t) { 
     // This console log is not firing. 
     console.log("Register clicked"); 

    } 
}); 

任何人都知道我需要做的是讓第二個模板的事件觸發?這只是不工作,現在有點令人沮喪。

在此先感謝您的幫助。

回答

0

好吧,我是一個完全愚蠢的人,最終以我自己的方式解決了這個問題。

第二個模板上的click事件實際上在測試和調試之後起作用,但是,提交事件不起作用。這兩個完全不同的東西,我只是一個白癡不澄清這一點。爲早先看過這些並且感到困惑的人們道歉。

相反的:

Template.second.events({ 
'submit #second_button': function(e, t) { 
    // This console log is not firing. 
    console.log("Register clicked"); 
    } 
}); 

我把它改爲:

Template.second.events({ 
'submit #second_button': function(e, t) { 
    // This console log is now firing 
    console.log("Register clicked"); 
    e.preventDefault() 
    return false; 

    } 
}); 
相關問題