CLNDR.js将变量传递到underscore.js中
CLNDR.js pass variable into underscore.js
我用CLNDR.js创建了一个日历。一切都很好,但我想把选定的日期传递到Undercore中,只显示活动日。
我的clndr html:的一部分
<div class="events-list">
<% _.each(eventsThisMonth, function(event) { %>
<!--<% if (event.date == selectedDate) { %>-->
<div class="event">
<a href="<%= event.url %>">. <%= event.location %></a>
</div>
<!--<% } %>-->
<% }); %>
</div>
脚本:
$(window).load(function(){
$('#mini-clndr').clndr({
template: $('#calendar').html(),
events: events,
clickEvents: {
click: function(target) {
if(target.events.length) {
var selectedDate = target.date['_i'];
var controls = $('#mini-clndr').find('.controls');
var daysContainer = $('#mini-clndr').find('.days-container');
var eventsContainer = $('#mini-clndr').find('.events');
controls.slideUp( "slow" );
daysContainer.slideUp( "slow" );
eventsContainer.slideDown( "slow" );
$('#mini-clndr').find('.x-button').click( function() {
controls.slideDown( "slow" );
daysContainer.slideDown( "slow" );
eventsContainer.slideUp( "slow" );
});
}
}
},
adjacentDaysChangeMonth: false
});
});
有人能帮我吗?这是我第一次使用Undercore.js
我认为您的问题与undercore.js 无关
不能在clndr模板中使用selectedDate。此模板仅在渲染日历时使用(因此在开始或调用渲染时),而不是在单击事件中使用。
然后,如果没有完整的clndr模板,很难为您提供正确的代码。但也许这样的方法可以奏效:
<% _.each(eventsThisMonth, function(event) { %>
<div class="event-item <%= event.date %>">
<div class="event-item-name"><%= event.title %></div>
<div class="event-item-location"><%= event.location %></div>
</div>
<% }); %>
在你的js:
(...)
$(".events-list ." + selectedDate).show();
controls.slideUp( "slow" );
(...)
$('#mini-clndr').find('.x-button').click( function() {
$(".events-list ." + selectedDate).hide();
(...)
这里有一个可能的策略:
- 让"event"是用户刚刚选择的日期的事件
- 假设此事件在
eventsThisMonth
数组中具有相应的元素 - 通过将每个元素的日期与所选日期进行比较,在该数组中查找其索引
- 现在使用Undercore或jQuery来隐藏
eventsContainer
中除该索引的条目之外的所有条目
以及一个可能的实现(未测试):
$(window).load(function(){
// Get a reference to the calendar instance
var clndrCalendar = $('#mini-clndr').clndr({
template: $('#calendar').html(),
events: events,
clickEvents: {
click: function(target) {
if(target.events.length) {
var selectedDate = target.date; // 'Moment' object from moment.js
var eventsThisMonth = clndrCalendar.eventsThisMonth;
var found = false; // boolean - Do we have a match
for(var index = 0; index < eventsThisMonth.length; index++) {
// Compares the two dates using moment.js 'sameAs' method - http://momentjs.com/docs/#/query/is-same/
if(selectedDate.sameAs(eventsThisMonth[index].date)) {
found = true;
break;
}
}
if(found) {
var jqEvents = $('#mini-clndr .events .event');
var jqSelectedEvent = jqEvents.get(index);
if(jqSelectedEvent) {
jqEvents.hide();
jqSelectedEvent.show();
}
}
var controls = $('#mini-clndr').find('.controls');
var daysContainer = $('#mini-clndr').find('.days-container');
var eventsContainer = $('#mini-clndr').find('.events');
controls.slideUp( "slow" );
daysContainer.slideUp( "slow" );
eventsContainer.slideDown( "slow" );
$('#mini-clndr').find('.x-button').click( function() {
controls.slideDown( "slow" );
daysContainer.slideDown( "slow" );
eventsContainer.slideUp( "slow" );
});
}
}
},
adjacentDaysChangeMonth: false
});
});
相关文章:
- Underscore.js某些对象的所有方法的总和
- JavaScript(Underscore.js)扩展功能
- 在underscore.js中显示列表中的所有项目(使用Parse.com)
- 使用Underscore.js修改json数组中所选元素的更有效方法
- CLNDR.js将变量传递到underscore.js中
- 如何使用带前导0的underscore.js生成一系列数字
- underscore.js在_之外没有数据.each
- Backbone.js 不起作用,而 Underscore、JSON 和 jQuery 可以
- context参数在underscore.js中做什么
- lodash/underscore.js函数来创建由x的n个副本组成的数组
- 使用underscore.js在深度嵌套的JSON中查找值
- 如果键与underscore.js匹配,请比较两个数组
- underscore.js IIFE语法有效吗
- 如何将Underscore.js过滤器与对象一起使用
- Underscore.js:具有_.object函数的意外行为
- Underscore.js _.isElement function
- Does underscore.js在_中创建匿名func对象,每个对象都需要进行乱码处理
- underscore.js,名为“”的全局对象;出口;和livefyre javascript API-集成冲突
- Backbone.js / Underscore.js:为什么模板没有转义?
- 在 Lodash.js/Underscore.js 中,如何为每个元素添加索引