10

これをビューで作成し、結果に対して .datepicker() を呼び出そうとしましたが、何も起こりません。

コンポーズコンテナ

<div>
<!--ko compose: { model:'viewmodels/schedule', view: 'views/schedule.html', activate:true} -->
<!--/ko-->
</div>

スケジュール.html

<div class="schedule-editor">

</div>

そしてスケジュールモジュール

define([], function () {
    var vm = {
        activate: activate,
    };
    return vm;

    function activate() {
        $('.schedule-editor').datepicker();
        console.log("activated schedule module");
        return true;
    }
});

コンソールは「アクティブ化されたスケジュール モジュール」をログに記録しますが、日付ピッカーは作成されません。Chromeコンソールに移動して jQuery 呼び出しを実行すると $('.schedule-editor').datepicker();、datepicker が正常に表示されます。

Durandal のドキュメントでは、Activate 関数は DOM が完全に構成された後に呼び出されると主張しているため、他に何を試せばよいかわかりません。

4

2 に答える 2

5

これには、knockout.js と durandal が目指している宣言型 UI 哲学に忠実な別のアプローチがあります。

次のように、HTML 内で日付ピッカーを宣言できます。

<div class="schedule-editor" data-bind="
    jqueryui: { 
        widget: 'datepicker', 
        options: { 
            // you can set options here as per the jquery ui datepicker docs
        } 
    }">

</div>

この要点にある jquery ui ウィジェット バインディングを含めるだけです: https://github.com/SteveSanderson/knockout/wiki/Bindings---jqueryui-widgets

jquery、jquery ui、およびノックアウトをロードした後、上記の JavaScript を必ず含めてください。

于 2013-03-23T19:07:40.910 に答える