Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery ui Meteor.js中的Jquery日期选择器_Jquery Ui_Meteor - Fatal编程技术网

Jquery ui Meteor.js中的Jquery日期选择器

Jquery ui Meteor.js中的Jquery日期选择器,jquery-ui,meteor,Jquery Ui,Meteor,我试图在我的项目中使用jquery datepicker,但我想在用户处于编辑模式时显示它。当我在没有if语句的情况下使用它时,它工作得很完美,但当我在if语句中使用它时,它不会呈现。我怎样才能解决这个问题 这是我的模板的一部分 {{#if editing_duedate}} <input class="datepicker" name="date"> {{else}} <div class="row text-center"&g

我试图在我的项目中使用jquery datepicker,但我想在用户处于编辑模式时显示它。当我在没有if语句的情况下使用它时,它工作得很完美,但当我在if语句中使用它时,它不会呈现。我怎样才能解决这个问题

这是我的模板的一部分

   {{#if editing_duedate}}
        <input class="datepicker"  name="date">
    {{else}}
        <div class="row text-center">
                <div class="eventduedate">
                     {{duedate}}
                </div>
        </div>
    {{/if}}
这是我的模板事件

Template.assignmenttodositem.events({

......
'dblclick .eventduedate':function(evt,tmpl){
    evt.preventDefault();
    Session.set('editingduedate', this._id);
}
..........
这是我检查语句是否正确的地方

Template.assignmenttodositem.editing_duedate = function () {
    return Session.equals('editingduedate', this._id);
 };

渲染模板时,
仅执行一次。
在此期间,
else
部分未被放入HTML,因此无法找到
.datepicker
。 您需要检查
editinduedate
变量是否已更新,然后创建日期选择器组件

Template.assignmenttodositem.rendered = function() {
   var self = this;
   this.autorun(function(){
     if(Session.equals("editingduedate", self.data._id )){
       $('.datepicker').datepicker();    
     }
   })
 };
HTML

在DOM中插入模板实例时,
呈现的
回调只执行一次:在包含
#if
语句的封闭模板中触发
日期选择器
初始化,因为执行时,我们处于
else
状态,因此输入还不存在


为了简单地解决这个问题,只需将datepicker移动到它自己的模板中(这在编程中一直被认为是一种很好的设计模式,只要可以,就可以将主要任务分解为更小、更容易解决的任务),这样,它的呈现回调将在适当的时间执行。

将日期选择器放入它自己的模板中。然后在template.datepicker.rendered中初始化日期选择器。如果您忘记了“this”上下文,它将不起作用。确保template.datepicker.rendered包含以下内容

this.$('#datepicker').datepicker(); 
其中#datepiker指html中日期选择器的id='datepicker'

<template name="assignmenttodositem">
  {{#if editing_duedate}}
    {{> datepicker}}
  {{else}}
    ...
  {{/if}}
</template>

<template name="datepicker">
  <input class="datepicker"  name="date">
</template>
Template.datepicker.rendered=function(){
  this.$('.datepicker').datepicker();
};
this.$('#datepicker').datepicker();