html5
  • jquery-mobile
  • knockout.js
  • datebox
  • 2012-08-29 46 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"/> 
    
    相關問題