2012-08-13 40 views
6

我宁愿使用Bootstrap的Meteor包实现而不是较少的文件版本,但我有一个时间让datepicker工作。如何获取twitter引导日期选择器以使用流星?

似乎有三个版本处于不同的状态,Aymkdn的最后一个版本正在编译并准备就绪。

http://www.eyecon.ro/bootstrap-datepicker/

https://github.com/eternicode/bootstrap-datepicker/

https://github.com/Aymkdn/Datepicker-for-Bootstrap

通过Aymkdn版本工作在普通的香草HTML罚款,但没有从流星担任,我有一个宏大的时间弄清楚为什么。

我想使用由Aymkdn与流星,但我不能得到它的工作。我认为它可能与流星中的js加载顺序或DOM渲染有关。有关我如何才能使其发挥作用的任何见解?

感谢 吊杆

+0

bootstrap-datepicker现在是Meteor的一个智能软件包。只是'流星添加bootstrap-datepicker' – Prashant 2013-03-04 20:00:43

+0

这里没有列出http://docs.meteor.com/#packages。你的意思是它可能是一个mrt包吗? – 2013-03-05 01:04:25

+0

尝试'流星列表'。你在那里找到? – Prashant 2013-03-05 04:45:51

回答

15

也许这种方法在最初发布这个问题时是不可用的,但是当它的模板被呈现时,我正在初始化日期选择器。

Template.templateName.rendered = function() { 
    $('#datepicker').datepicker(); 
} 

下面是该事件的链接:http://docs.meteor.com/#template_rendered

通过这种方法,我没有保持会话属性或处理的焦点事件。 Prashant的解决方案在我卸载模板并返回时会失效,因为session属性被触发。我还遇到了一个问题,数据中心第一次没有显示焦点。

是的,每次渲染模板时,数据添加器都会被初始化,但是我认为这很好,因为我很确定模板资源在它们之间导航时会被清除。

2

为了让日期选择器工作,这是我做的,

// At the beginning of the script 
Session.set("datepicker_unset", 1); 

Template.template_name.events = { 
    'focus #date-id' : function(event) { 
     if (Session.get("datepicker_unset")) { 
      $(event.target).datepicker(); 
      Session.set("datepicker_unset", 0); 
     } 
     // Anything else on #date-id focus? 
    }, 
    // Any other events here 
} 

我猜您正在使用,$(document).ready()方法。我也做了,因为它不适合我,我认为这将是最好的解决方案。

希望这对你也有效!

+0

我必须将它作为一个包吗?或者它可以进入/客户端? – 2012-08-20 17:59:13

+0

是的,你可以将它添加到/客户端,它会开始工作。我已经编辑了相应的答案。 – Prashant 2012-08-21 11:15:20

+1

你应该只需要调用.datepicker()一次。这会在每次焦点事件被触发时调用它。这将每次都设置日期选择器。 – peter 2012-08-29 23:48:01