html5
  • jquery-mobile
  • knockout.js
  • datebox
  • 2012-08-29 104 views 1 likes 
    1

    有没有人成功地使用jQuery Mobile DateBox与Knockout.js?jQuery Mobile的DateBox&Knockout.js

    我遇到麻烦的结合提供了选择日期之前显示的值时,工作。它仍然是空白的。如果我使用标准文本输入,则绑定工作正常。

    <input id="start" type="date" data-bind="value: start" data-role="datebox" data-options='{"mode": "timeflipbox", "useButton": false, "useFocus": true, "dialogForce" : true, "transition" : "slidedown"}'> 
    
    //In the view model: 
    this.start = ko.observable(startTime); 
    

    我已经试过

    $('#start').datebox('refresh') 
    

    ,但没有运气....

    回答

    3

    我最后写一个自定义的淘汰赛,这似乎这样的伎俩结合:

    ko.bindingHandlers.jqmDateBox = { 
        update: function (element, valueAccessor, allBindingsAccessor, context) { 
         setTimeout(function() { 
          var value = valueAccessor(); 
          var valueUnwrapped = ko.utils.unwrapObservable(value); 
          $(element).val(valueUnwrapped); 
          $(element).data('datebox').options.defaultPickerValue = valueUnwrapped; 
         }, 0); 
        } 
    } 
    

    用法:

    <input id="end" name="end" type="date" data-bind="value: end, jqmDateBox: end" data-role="datebox" /> 
    
    由大卫
    +0

    不错!你可以抛出一个链接在这里评论任何机会,这将是人谁也从未听说过knockout.js的起点? (然后我会把这两个在jQM-DateBox的官方文档) –

    +0

    http://learn.knockoutjs.com/这是什么让我开始 - 伟大的互动教程 –

    +0

    酷酷 - 我坚持与服务的问题上工作现在的DateBox,但希望能很快进入肉类和马铃薯。谢谢! –

    0

    的结合提供了对我没有工作。我正在使用Datebox的最新不稳定版本。

    我写此绑定,这对我在calbox模式下工作:

    ko.bindingHandlers['dateboxvalue'] = { 
        'init': function(element, valueAccessor, allBindingsAccessor, viewModel) { 
    
        ko.utils.registerEventHandler(element, "change", function() { 
         var value = valueAccessor(); 
         value($(element).datebox('getTheDate')); 
        }); 
    }, 
        'update': function (element, valueAccessor, allBindingsAccessor, context) { 
    
        $(element).datebox(); 
        $(element).datebox('setTheDate', ko.utils.unwrapObservable(valueAccessor())); 
        $(element).trigger('datebox', {'method':'doset'}); 
        } 
    }; 
    

    使用这样

    <label for="mode1">CalBox</label> 
    <input name="mode1" id="mode1" type="text" 
         data-role="datebox" 
         data-options='{"mode":"calbox", "useNewStyle":true}' 
         data-bind="dateboxvalue: myDate"/> 
    
    相关问题