我最近使用 Knockout 和 JQuery 将我公司的项目移植到了 Durandal。直截了当地说:我需要使用两个 HTML 输入来初始化 JQuery UI 的日期选择器。但是,当我这样做时,JQuery 无法找到输入:
看法:
<div data-bind="if: !CurrentUser()">
<h1 data-bind="html: DisplayName"></h1>
<div data-bind="compose: 'users/_UsersList.html'"></div>
</div>
<div data-bind="with: CurrentUser(), visible: CurrentUser()">
<h1>User detail</h1>
<div data-bind="compose: 'users/_UserDetail.html'"></div>
</div>
viewmodel - 在第一个 div 中选择用户时调用 SelectUser() 函数,然后加载第二个 div 和 users/_UserDetail.html:
users.SelectUser = function (user) {
users.CurrentUser(user);
/* ... */
$(function () {
$("#datepickerFrom").datetimepicker({
dateFormat: "d. m. yy",
timeFormat: "HH:mm:ss",
defaultDate: null
});
$("#datepickerTo").datetimepicker({
dateFormat: "d. m. yy",
timeFormat: "HH:mm:ss"
});
});
}
_UserDetail.html 的重要部分
<div class="control-group">
<label class="control-label">Active from</label>
<div class="controls">
<input type="text" data-bind="value: ActiveFrom" id="datepickerFrom" />
</div>
</div>
<div class="control-group">
<label class="control-label">Active to</label>
<div class="controls">
<input type="text" data-bind="value: ActiveTo" id="datepickerTo" />
</div>
</div>
然后两个 HTML 输入未定义。如果我div
将compose
绑定更改为实际的 users/_UserDetail.html 内容,它工作得很好,但是视图很快就会变得一团糟——html文件并不小。如果有人能指出我正确的方向,我将不胜感激。谢谢!