我是一般的編程新手,但尤其是淘汰賽。我有一個正在填充foreach綁定的表。在這個表中,我有一個列,我想成爲一個複選框,其檢查值從通過ajax檢索的mysql數據庫值填充。我明白,檢查綁定應該能夠採取0或1,鬆散轉換來檢查和取消選中。Knockout複選框綁定到ajax檢索值
http://knockoutjs.com/documentation/checked-binding.html
對於複選框,KO會設置元素時 參數值爲true,當它是假的檢查,並選中。如果你給 一個實際上不是布爾值的值,它將被鬆散地解釋。 這意味着非零數字和非空對象和非空 字符串都將被解釋爲true,而零,null, 未定義,並且空字符串將被解釋爲false。
所以我們可以說這是我的ko.observableArray命名的部分:
{"id":"1","partdes":"asdf","partcost":"1.00","sellcost":"2.00","tax":"1"}
而且我從我的表此代碼段:
<tbody data-bind="foreach: parts">
<tr>
<td data-bind="text: id"></td>
<td data-bind="text: partdes"></td>
<td data-bind="text: partcost"></td>
<td data-bind="text: sellcost"></td>
<td><input type="checkbox" data-bind="checked: tax" /></td>
//And I added this line to get the actual value:
<td data-bind="text: tax"></td>
</tr>
</tbody>
,一切工作正常,除了該複選框始終是即使值爲0,也要進行檢查。爲什麼沒有這項工作?
我相信你是正確的這裏我已閱讀,阿賈克斯通過布爾值的字符串。任何關於如何將值轉換回布爾值的建議? – user2577435
>我讀過ajax將布爾值作爲字符串傳遞。 這是不正確的。您可以傳遞布爾值或數字或字符串。我建議檢查後端代碼。 如果您無法控制後端,則可以在前端接收時處理數據。例如:'data.parts.forEach(function(d){d.tax =(d.tax ==='0'?false:true);}); – amakhrov
不幸的是我有控制後端,這是問題。在做了一些研究之後,我能夠使用_ $ success = settype($ tax,「boolean」); _在我的ajax調用的後端將我的變量轉換爲PHP中的布爾值。這將$ tax轉換爲布爾值,並以true/false的形式傳遞,允許我使用本地調用,而不必在前端更改我的任何代碼。 – user2577435