如何将事件绑定到Can.Control,以便在匹配选择器的元素添加到控件元素时运行?

时间:2015-01-15 23:19:11

标签: canjs canjs-view canjs-control

我正在尝试构建一个DateTimePicker Widget,并且不想担心小部件的实例化,所以我创建了一个以html主体为元素的Can.Control。

但是,现在我的输入元素使用can.view在DOM中呈现。如何将事件绑定到将新的dateTime元素插入控件范围?

/**
 * DateTime Plugin
 */

plugins.DateTime = can.Control.extend({

},{
    init : function ( element , options ){
    },

    'input.dateTime click' : function (){
        $( this.element ).find('input.dateTime').datetimepicker();
    }
});
$(function(){
    new plugins.DateTime('body');
});

当元素添加到控件元素时,有没有什么方法可以指定'input.dateTime load'来绑定一个datepicker?

1 个答案:

答案 0 :(得分:0)

有几种方法可以做到这一点,例如,基于can.view的渲染可以在完成后执行回调,因此您可以执行以下操作:      var that = this; can.view(template, data, function() { that.element.find("input.dateTime").datetimepicker(); }

但这并不是我推荐的。前面的示例并不考虑在第一次呈现视图后由于数据更改而必须重绘其中一个字段时的任何情况。相反,创建一个帮助器: Mustache.registerHelper("datetimepicker", function() { return function(el) { $(el).datetimepicker(); } });

然后在你的(Mu)Stache文件中:

<input type="text" name="datetime_start" class="dateTime" {{datetimepicker}} can-value="datetime_start">