我想选择一个默认选择选项,基于我填充我的选择选项的属性之一。选择默认选项值与淘汰赛
此代码直接从@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'可观察数据中。就目前而言,它不会起作用,因为“选择”无论如何都不是可观察的,而且您有问题,因为您无法一次更改两个条目中的“选择”,所以您将会遇到两种选择选择或不选择选项。 –