2011-06-01 35 views
1

我的代碼(見this jsfiddle)如下:如何使下拉列表更改視圖模型的多個屬性?

<h2>Knockout with jQuery UI Widget Bindings</h2> 

<div> 
    <label for='from'>Date From:</label> 
    <input id='from' type='text' 
    data-bind='jqueryui: "datepicker", 
       value: from' /> 
    <small>(with datepicker)</small> 
</div> 

<div> 
    <label for='to'>Date To:</label> 
    <input id='to' type='text' 
    data-bind='jqueryui: "datepicker", 
       value: to' /> 
    <small>(with datepicker)</small> 
</div> 

<select id="Range" name="Range" data-bind="value: range, options:ranges, optionsText:'name'"> 

而且此Javascript:

var viewModel = { 
    ranges : [ 
     {name:'Yesterday',value:'Yesterday'}, 
     {name:'Last7Days',value:'Last 7 Days'}, 
     {name:'Last14Days',value:'Last 14 Days'}, 
     {name:'LastFullWeek',value:'Last Full Week'}, 
     {name:'LastFullFortnight',value:'Last Full Fortnight'}, 
     {name:'LastFullThreeWeeks',value:'Last Full Three Weeks'}, 
     {name:'LastMonth',value:'Last Month'}, 
     {name:'MonthToDate',value:'Month To Date'}, 
     {name:'LastQuarter',value:'Last Quarter'}, 
     {name:'Select',value:'Select'} 
    ], 
    from: ko.observable(''), 
    to: ko.observable(''), 
    range: ko.observable('') 
}; 
ko.applyBindings(viewModel); 

我想重置從日期和日期到時,我選擇從下拉列表中的值。 以同樣的方式,如果我通過datepicker手動選擇一個值,我想將下拉列表更改爲「選擇」

有關如何執行此操作的任何想法?

回答

1

手動訂閱是一個不錯的選擇。

喜歡的東西:http://jsfiddle.net/rniemeyer/N58rf/

基本思路是這樣的:

viewModel.range.subscribe(function(newValue) { 
    if (newValue && newValue.value !== 'Select') { 
     this.from('').to(''); 
    } 
}, viewModel); 
+0

小問題,該事件只有一次 – smnbss 2011-06-01 14:30:33

+0

你能澄清這個問題引發的?訂閱將在每次更改時被調用。如果您使用IE,我確實注意到一個問題,即選項數組有一個尾隨逗號。在小提琴中固定。 – 2011-06-01 15:12:30

+0

好吧,我很蠢。我在調用訂閱事件的函數內設置viewModel.range – smnbss 2011-06-01 16:07:06

相關問題