我希望在流星离子模板中显示一个简单的javascript日历。我正确设置了页面,但是当我在模板助手中写入时:返回document.write(buildCal(...))日历劫持了页面,并且没有显示其他元素。当我只是代码返回buildCal(.....)时,它只打印出所有的div而不是html。有人能告诉我这里缺少什么吗?
calendar.js
function buildCal(m, y, cM, cH, cDW, cD, brdr) {
var mn = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
var dim = [31, 0, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
var oD = new Date(y, m - 1, 1); //DD replaced line to fix date bug when current day is 31st
oD.od = oD.getDay() + 1; //DD replaced line to fix date bug when current day is 31st
var todaydate = new Date() //DD added
var scanfortoday = (y == todaydate.getFullYear() && m == todaydate.getMonth() + 1) ? todaydate.getDate() : 0 //DD added
dim[1] = (((oD.getFullYear() % 100 != 0) && (oD.getFullYear() % 4 == 0)) || (oD.getFullYear() % 400 == 0)) ? 29 : 28;
var t = '<div class="' + cM + '"><table class="' + cM + '" cols="7" cellpadding="0" border="' + brdr + '" cellspacing="0"><tr align="center">';
t += '<td colspan="7" align="center" class="' + cH + '">' + mn[m - 1] + ' - ' + y + '</td></tr><tr align="center">';
for (s = 0; s < 7; s++) t += '<td class="' + cDW + '">' + "SMTWTFS".substr(s, 1) + '</td>';
t += '</tr><tr align="center">';
for (i = 1; i <= 42; i++) {
var x = ((i - oD.od >= 0) && (i - oD.od < dim[m - 1])) ? i - oD.od + 1 : ' ';
if (x == scanfortoday) //DD added
x = '<span id="today">' + x + '</span>' //DD added
t += '<td class="' + cD + '">' + x + '</td>';
if (((i) % 7 == 0) && (i < 36)) t += '</tr><tr align="center">';
}
return t += '</tr></table></div>';
}
Template.calendar.helpers({
currentcalendar: function() {
var todaydate = new Date();
var curmonth = todaydate.getMonth() + 1; //get current month (1-12)
var curyear = todaydate.getFullYear(); //get current year
return document.write(buildCal(curmonth, curyear, "main", "month", "daysofweek", "days", 1));
}
});
calendar.html
<template name="calendar">
{{#contentFor "headerButtonLeft"}}
{{>ionNavBackButton path="index"}}
{{/contentFor}}
{{#contentFor "headerTitle"}}
<h1 class="title">Calendar</h1>
{{/contentFor}}
{{#ionView}}
{{#ionContent}}
{{currentcalendar}}
{{/ionContent}}
{{/ionView}}
</template>
答案 0 :(得分:0)
只需返回buildCal()
而不是document.write(buildCal())
- 您几乎从未在Meteor中使用document.write()
,模板会为您提供动态内容。