Javascript 在Durandal模板项目中使用时间选择器或日期选择器

Javascript 在Durandal模板项目中使用时间选择器或日期选择器,javascript,durandal,Javascript,Durandal,我对杜兰达尔很陌生。我已经尝试过在项目中添加时间选择器,如下所示。 schedule.js代码: define([], function (require) { var script = require('jquery.ptTimeSelect'); var app = require('durandal/app'); var vm = { viewAttached: viewAttached, }; return vm; function viewAttached(view) {

我对杜兰达尔很陌生。我已经尝试过在项目中添加时间选择器,如下所示。 schedule.js代码:

define([], function (require) {
var script = require('jquery.ptTimeSelect');
var app = require('durandal/app');

var vm = {
    viewAttached: viewAttached,
};
return vm;

function viewAttached(view) {
    $(view).find('#sample1').ptTimeSelect();
    //$('#sample1').ptTimeSelect();

    console.log("activated schedule module");
    return true;
}
});
这里jquery.ptTimeSelect是时间选择器js文件。 我真的需要在这里或其他地方添加jquery.ptTimeSelect.js吗

schedule.html:

  <section>
    <p>
        <label>Start</label><br />
        <input id="sample1" class="ui-widget-content" name="s1Time2" value="" />
    </p>

</section>


开始

我面临的问题是,我在页面底部有一个基本的时间选择器。我不知道在哪里添加js和css文件到项目中。请帮助我,我对这个很陌生


我正在使用下面链接中的timepicker

我不知道您的脚本是什么样子的,但我不确定它是否能够在您加载它的方式(作为AMD模块)中正确执行。如果您想继续这样做,我将使用ptTimeSelect.js脚本并将其与其他jQuery脚本一起全局加载

但是在Durandal应用程序中,通常最好避免直接从视图模型中操作DOM。最好的方法是创建一个定制的ko绑定处理程序,并在绑定内部执行DOM操作。这样,您就不必担心时间问题,并且视图模型与直接的UI操作保持隔离

谢天谢地,这并不像听起来那么难。史蒂夫·桑德森(Steve Sanderson)制作了一个简单的ko装订,您可以在开箱即用。看看这个要点:

上面的链接引用了一个现场的JSFIDLE演示。本演示不使用Durandal,但相关的淘汰概念是相同的


这里有一些关于自定义绑定的好的一般信息:

我不知道您的脚本是什么样子的,但我不确定它是否能够以您加载它(作为AMD模块)的方式正确执行。如果您想继续这样做,我将使用ptTimeSelect.js脚本并将其与其他jQuery脚本一起全局加载

但是在Durandal应用程序中,通常最好避免直接从视图模型中操作DOM。最好的方法是创建一个定制的ko绑定处理程序,并在绑定内部执行DOM操作。这样,您就不必担心时间问题,并且视图模型与直接的UI操作保持隔离

谢天谢地,这并不像听起来那么难。史蒂夫·桑德森(Steve Sanderson)制作了一个简单的ko装订,您可以在开箱即用。看看这个要点:

上面的链接引用了一个现场的JSFIDLE演示。本演示不使用Durandal,但相关的淘汰概念是相同的


这里有一些关于自定义绑定的好信息:

要使用solid timepicker控件和durandal快速启动并运行,您可以按照以下步骤操作

按以下顺序将这些脚本添加到页面中。在加载require/durandal之前,将它们添加为标准标记

  • jQuery
  • jQueryUI
  • 此时间选择器控件(基于jquery ui构建)
  • 海瑟曼提到的史蒂夫·桑德森的jQueryUI击倒绑定 以下是您引用上述脚本的方式,这些脚本标记应进入主布局页面index.html或承载durandal应用程序的任何页面:

    <head>
       <script src="/Scripts/jquery-1.9.1.js"></script>
       <script src="/Scripts/jquery-ui-1.10.0.js"></script>
       <script src="/Scripts/jquery.ui.timepicker.js"></script>
       <script src="/Scripts/knockout-jquery-ui-widget.js"></script>
       <script type="text/javascript" src="/App/durandal/amd/require.js" data-main="/App/main"></script>
    </head>
    
    
    
    然后,您只需在durandal视图中创建一个时间选择器,如下所示:

    <input type="text" placeholder="Choose Time" data-bind="jqueryui: { widget: 'timepicker', options: { showPeriod: true }}">
    

    要使用可靠的计时器控件和durandal快速启动和运行,您可以按照以下步骤操作

    按以下顺序将这些脚本添加到页面中。在加载require/durandal之前,将它们添加为标准标记

  • jQuery
  • jQueryUI
  • 此时间选择器控件(基于jquery ui构建)
  • 海瑟曼提到的史蒂夫·桑德森的jQueryUI击倒绑定 以下是您引用上述脚本的方式,这些脚本标记应进入主布局页面index.html或承载durandal应用程序的任何页面:

    <head>
       <script src="/Scripts/jquery-1.9.1.js"></script>
       <script src="/Scripts/jquery-ui-1.10.0.js"></script>
       <script src="/Scripts/jquery.ui.timepicker.js"></script>
       <script src="/Scripts/knockout-jquery-ui-widget.js"></script>
       <script type="text/javascript" src="/App/durandal/amd/require.js" data-main="/App/main"></script>
    </head>
    
    
    
    然后,您只需在durandal视图中创建一个时间选择器,如下所示:

    <input type="text" placeholder="Choose Time" data-bind="jqueryui: { widget: 'timepicker', options: { showPeriod: true }}">
    
    
    
    感谢您的快速回复。因为我对durandal不太了解,所以您可以提供一些链接或代码和平,以便durandal项目中有时间选择器。我已经添加了链接到我正在使用的代码,请仔细阅读。感谢你的快速回复。因为我不知道durandal的深度,所以你可以提供一些链接或代码和平,让durandal项目中的时间选择器。我已经添加了我正在使用的代码的链接,请仔细阅读。感谢您宝贵的回复。我已经下载了jQuery、jQueryUI等,现在我应该在我的shcedule.js中添加这些(如何提供这些文件的参考)。或者我需要在其他文件中引用它们吗?最简单的方法是直接在html页面的头部引用它们。我更新了上面的答案以显示这一点。我尝试了你的答案,现在我只能看到文本框(点击“无时间选择器”弹出),但标签抛出一个错误,说“元素标题出现次数太少”。那么我如何才能在schedule.html文件中添加标记..抱歉-该部分应该进入主布局页面或index.html页面,该页面包含整个durandal应用程序。谢谢。。我已将标题内容添加到index.chtml。。但还是没有运气。在chrome中的inspect元素中,我得到了d错误,因为“jqueryui绑定不将'timepicker'识别为jQuery UI小部件”,“视图/时间表”,对象]。感谢您宝贵的回复。我已经下载了jQuery、jqueryui等,现在我应该在我的shcedule.js中添加它们。(如何提供这些文件的参考)。或者我需要在其他文件中引用它们吗?最简单的方法是直接在html页面的头部引用它们。我更新了上面的答案以显示这一点。我尝试了你的答案,现在我只能看到文本框(点击“无时间选择器”弹出),但标记抛出一个错误,说“元素标题出现的时间太少”