我在一个视图中编写这个,然后尝试在结果上调用.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的罚款.
解决方法
像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附件