注意: 有关ObservableArrays的问题。
假设我有以下viewmodel:
var viewmodel = {
arrayOfBooleans: [
ko.observable(false),
ko.observable(false),
ko.observable(false)
]
}
这样的观点:
<div data-bind="foreach: arrayOfBooleans">
<button data-bind="click: ????">Set to true</button>
</div>
我可以在foreach
内做什么来让<button>
在点击时将observable设置为true?使用data-bind="click: someFunction"
,第一个参数someFunction
得到的是数组中的observable的未包装值(不是observable本身),并且似乎无法返回observable或传递自定义参数。
答案 0 :(得分:1)
希望它会给出一些想法。
var viewmodel = {
var self = this;
self.arrayOfBooleans = ko.observableArray([]);
self.arrayOfBooleans.push(new _newBoolean());
self.arrayOfBooleans.push(new _newBoolean());
self.arrayOfBooleans.push(new _newBoolean());
function _newBoolean() {
self.one = ko.observable(false);
}
self.setToTrue = function(index){
self.arrayOfBooleans()[index].one(true);
};
}
如果您想将其作为按钮
<div data-bind="foreach: arrayOfBooleans">
<button data-bind="click: $root.setToTrue($parent.arrayOfBooleans.indexOf($data))">
Set to true
</button>
<input type=hidden data-bind="value:one" />
</div>
如果您想将它作为单选按钮而不是更简单
<div data-bind="foreach: arrayOfBooleans">
<span>Set To True</span><input type=radio data-bind="value:one" />
</div>
如果你喜欢这个......请点击上传 * 或 * 如果它解决了您的问题..请将此标记为答案