1

私は DateTimePicker ウィジェットを構築しようとしていますが、ウィジェットのインスタンス化について心配したくないので、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」を指定して日付ピッカーをバインドする方法はありますか?

4

1 に答える 1

0

これを行うにはいくつかの方法があります。たとえば、can.view ベースのレンダリングは終了後にコールバックを実行できるため、次のように実行できます。 var that = this; can.view(template, data, function() { that.element.find("input.dateTime").datetimepicker(); }

しかし、それは私が本当にお勧めするものではありません。前の例では、ビューの最初のレンダリング後にデータが変更されたために、これらのフィールドの 1 つを再描画する必要がある場合を考慮していません。代わりに、ヘルパーを次のように作成します。 Mustache.registerHelper("datetimepicker", function() { return function(el) { $(el).datetimepicker(); } });

次に、(Mu)Stache ファイルで:

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

于 2015-01-16T01:55:54.387 に答える