2012-07-27 41 views
2

在一個表單中,我有一個選擇框,其中有幾個選項,每個選項代表一個影響表單其餘部分的各種變量的報告。一些報告需要開始日期,其他報告需要兩個結束日期。我已綁定爲每一個報告,這樣的選項元素的要求:用ID是報告的ID和BOOL是真或假在選擇中每個選項具有多個值的敲除綁定

<select data-bind="value: ReportId"> 
    <option value="ID" data-hasStartDate="BOOL" data-hasEndDate="BOOL">Report name</option> 
</select> 

<input data-bind="visible: hasStartDate" /> 
<input data-bind="visible: hasEndDate" /> 

。我使用敲除數據綁定選擇框的值到reportId。但我無法弄清楚如何將hasStartDate和hasEndDate-values綁定到Knockout可觀察對象以顯示適當的表單元素。

即使使用自定義綁定,我需要一個正常的jQuery onChange事件才能將值應用於Knockout值hasStartDate和hasEndDate。 Knockout本身完全可以做到嗎?

+1

你的數據應該是在視圖模型,而不是視圖。 – 2012-07-27 08:50:22

回答

2

您是否嘗試過在選擇框中使用options binding

你也不能使用data-whatever="some value"綁定敲除。您總是使用data-bind,如下所示:data-bind="bindingtype: value"

編輯: 話雖這麼說...如果你想在<select>元素從選擇的選項中的數據,我會用下面的jQuery:

$("select").on('change', function() { 
    var selectedData = $(this).find(":selected").data("stuff"); 
}); 

然後可以使用selectedData並將其應用於挖空視圖模型。

工作在撥弄例如:http://jsfiddle.net/RZq6Q/4/

+0

我不使用選項綁定的原因是因爲我沒有選擇框中表示的對象作爲挖空陣列。使用ASP.NET MVC 3生成選擇框。 我使用data-whatever屬性來存儲值,但不能用於數據綁定。我希望有一些方法可以將Knockout函數中的這些值讀出並應用到Knockout模型中。 – Erwin 2012-07-27 09:14:25

+1

如果你正在構建一個挖掘應用程序,我強烈建議在挖掘中收集所有的視圖數據,而不是以這種方式混合使用ASP.NET MVC視圖和挖空視圖。 – 2012-07-27 09:16:43

+0

的確,在視圖中儘可能多地使用它,但是我有很多靜態內容的視圖,當它使用MVC構建時,會更快加載,而不是通過使用Knockout的Javascript生成。所以我試圖在兩者之間找到一個正確的平衡點,但這可能並不總是會產生最優雅的解決方案。 – Erwin 2012-07-27 09:29:33

相關問題