【发布时间】:2017-02-01 01:18:35
【问题描述】:
当初始值为 true 时,ko.computed 仅在缺少所有真实新值的虚假新值上被调用。
同样,如果初始值为 false,则 ko.computed 仅在新的 true 值上调用。
$(function () {
function getFormattedDate() {
var date = new Date();
var str = date.getFullYear() + "-" + (date.getMonth() + 1) + "-" + date.getDate() + " " + date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds();
return str;
}
var ViewModel = function (initial_value) {
var self = this
self.debug_logs = ko.observableArray()
self._my_checked = initial_value
self.my_checked = ko.computed({
read: function () {
self.debug_logs.push({ log: "Reading value to " + self._my_checked + " " + getFormattedDate() })
return self._my_checked
},
write: function (value) {
self.debug_logs.push({ log: "Setting value to " + value + " " + getFormattedDate() })
self._my_checked = value
}
})
}
ko.applyBindings(new ViewModel(true))
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
<input type="checkbox" data-bind="checked: my_checked" />
<ol data-bind="foreach:debug_logs">
<li data-bind="text:log"></li>
</ol>
</div>
我需要在清除和设置复选框时调用计算。这将驱动其他未显示的功能。
提前谢谢你
【问题讨论】:
标签: jquery knockout.js