我正在将一个KnockoutJS observable(它跟踪整个Object)绑定到一个带有'value'绑定的select标签,我想知道是否有可能以某种方式获得所选Observable的文本表示?
这是我绑定到
的示例对象var dogObject = ko.observable({
Property1 = ko.observable(),
Property2 = ko.observable(),
.
.
.
})
以下是选择标记:
<select class="textbox" data-bind="options: collectionOfDogObjects(), optionsCaption: 'Select...', optionsValue: $data, optionsText: 'Property1', value: dogObject"</select>
答案 0 :(得分:1)
执行此操作的选项已经包含在您的代码中:使用optionsText
指定哪个属性 对象的toString表示。
您的问题代码很少,但看起来您目前只使用其中一个可观察对象。如果你想创建一个组合了几个的toString
,你可以考虑使用一个计算的observable。如果您有具有构造函数或其他形式的继承的适当视图模型,这是最简单的。这是一个例子:
var Dog = function(data) {
var self = this;
self.Property1 = ko.observable(data.p1);
self.Property2 = ko.observable(data.p2);
self.toString = ko.computed(function() {
return self.Property1() + " " + self.Property2();
});
};
ko.applyBindings({
collectionOfDogObjects: ko.observableArray([
new Dog({ p1: "German", p2: "Shephard" }),
new Dog({ p1: "Russian", p2: "Snowdog" })
]),
dogObject: ko.observable(null)
});
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
<select data-bind="options: collectionOfDogObjects(), optionsCaption: 'Select...', optionsValue: $data, optionsText: 'toString', value: dogObject"></select>
&#13;