骨干视图测试if元素是否有datepicker

时间:2016-12-26 14:04:11

标签: javascript jquery backbone.js backbone-views bootstrap-datepicker

首先关闭:抱歉可怕的主题名称

我有一个骨干视图,它有一个onRender()方法。 它的作用是使用select jquery插件(选择)初始化所有选择,并使用jquery插件bootstrap-datepicker(https://github.com/uxsolutions/bootstrap-datepicker)初始化一些输入文本字段。

这是代码(coffeescript)

  onRender: =>
    ### init chosen select picker ###
    $('.chosen-select', @el).chosen
      width: '100%'
    ### init datepickers ###
    $('.date', @el).datepicker()

现在我想为视图编写规范,如果数据选择器和选择选择在适当的元素元素上初始化的话,我会坚持测试。

所以我试着试试控制台:

选择的选项很容易:

/* lets build the view  */
v = new MyBackboneView();
v.render();
v.onRender();
/* now lets grab a select that I expect to be an chosen select now */
select = $(':input[name="user_id"]', v.el);
/* now I check for the chosen function on the element */
$(select).data('chosen'); /* => is not undefined, yay! */

所以现在我想为datepicker的东西做同样的事情。

/* lets build the view  */
v = new MyBackboneView();
v.render();
v.onRender();
/* now lets grab a input text field that I expect to be a datepicker now */
input = $(':input[name="start_date"]', v.el);
/* now I check for the datepicker function on the element */
$(input).data('datepicker'); /* => is undefined :-( */

所以我无法通过这种方式检查日期选择器。但这是我不明白的。

如果我在浏览器中加载页面,并且我使用浏览器中呈现的元素(不仅仅是控制台)执行与上面相同的操作,我会在检查时看到所需对象

$(input).data('datepicker');

基本上,当浏览器显示视图时:

/* lets grab a input text field that I expect to be a datepicker now */
input = $(':input[name="start_date"]');
/* now I check for the datepicker function on the element */
$(input).data('datepicker'); /* => is defined :-O */

有人可以向我解释一下吗?我无法通过这一个看到。 而且。有没有更好的方法来检查在控制台(或单元测试)中的元素上使用datepicker?

0 个答案:

没有答案