如何将事件绑定到Can.Control每当选择器相匹配的元素被添加到控制元件运行?(How to b

2019-10-21 14:33发布

我想建立一个DateTimePicker控件,不想操心,所以我创建了一个Can.Control这需要HTML正文为元素的小部件的实例。

但是,现在我的输入元素在DOM使用can.view渲染。 我怎么一个事件到一个新的日期时间元素的插入绑定到我的控制范围是什么?

/**
 * 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负载”绑定一个日期选择器,当元素被添加到控制元件?

Answer 1:

有几个方法可以做到这一点,例如,您的基于can.view渲染可它完成后进行回调,所以你可以做: var that = this; can.view(template, data, function() { that.element.find("input.dateTime").datetimepicker(); } var that = this; can.view(template, data, function() { that.element.find("input.dateTime").datetimepicker(); }

但是,这并不是什么我建议。 在前面的例子不占任何情况下,当这些字段中的一个具有,因为该视图的第一渲染后的数据更改的重绘。 取而代之的是,创建一个帮助这样: Mustache.registerHelper("datetimepicker", function() { return function(el) { $(el).datetimepicker(); } });

然后在你(亩)Stache文件:

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



文章来源: How to bind an event to Can.Control to run whenever an element matching the selector is added to the control element?