javascript – .datepicker调用里面的Durandal激活功能不工作

我在一个视图中编写这个,然后尝试在结果上调用.datepicker(),但没有任何反应.

组合容器

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

schedule.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;
    }
});

控制台日志“激活的计划模块”,但是没有创建datepicker.
如果我去chrome控制台并运行jQuery调用,
$( ‘时间表编辑器’)日期选择器().它带来了datepicker的罚款.

Durandal文档声称在DOM完整组合后调用了activate函数,所以我不知道还有什么要尝试的.

解决方法

像nemesv一样,你应该使用 viewAttached.
define([],function () {
    var vm = {
        viewAttached: viewAttached,};
    return vm;

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

激活发生在生命周期之前,您的模型已被数据绑定到新视图之前,并且视图已添加到dom. viewAttached发生在视图被数据绑定到你的模型并附加到dom之后.

编辑

Durandal 2.0已重命名为viewAttached附件

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...