我想選擇一個默認選擇選項,基於我填充我的選擇選項的屬性之一。選擇默認選項值與淘汰賽
此代碼直接從@rneimeyer's fiddle複製。我做了調整,做我想做的事情。
所以,我有選擇作爲我的observableArray。
var choices = [
{ id: 1, name: "one", choice: false },
{ id: 2, name: "two", choice: true },
{ id: 3, name: "three", choice: false }
];
function ViewModel(choices, choice) {
this.choices = ko.observableArray(choices);
};
rneimeyer的小提琴和礦山之間的區別是,我將我的對象上choice
財產observableArray內,而不必爲我們想成爲默認選項單獨觀察到。
這是我的嘗試fiddle。
現在我在選擇元素標記中檢查choice
屬性是否爲true。如果是,那麼我想將name
設置爲value
屬性,以使其成爲默認值。
<select data-bind="options: choices, optionsText: 'name', value: choice"></select>
我已經與simple data model in my fiddle這裏還有這是工作只是因爲我想測試此。
我想我真正的疑問是如何檢查choice
屬性在數據綁定。我發現optionText
能夠正常訪問name
屬性。不知道爲什麼value
屬性中的choice
屬性不相同。
' rneimeyer的小提琴與我的區別在於,我在observableArray中的對象上添加了choice屬性,而不是爲我們想要默認的選項設置單獨的observable。「爲什麼?另一種方法有什麼問題?你想通過這樣做來解決什麼問題? –
不同之處在於數據如何通過服務傳遞給我。該服務將一個塊中的所有信息提供給我,而不是僅具有默認選項的對象。 – shriek
那麼?當你從你的服務中獲得數據時,你通過它運行並取出具有'choice === true'的數據並放入你的'selectedOption'可觀察數據中。就目前而言,它不會起作用,因爲「選擇」無論如何都不是可觀察的,而且您有問題,因爲您無法一次更改兩個條目中的「選擇」,所以您將會遇到兩種選擇選擇或不選擇選項。 –