我创建了一个ObservablePropertyList
应该在属性更改时执行回调的函数。实现是:
function ObservablePropertyList(nameCallbackCollection) {
var propertyList = {};
for (var index in nameCallbackCollection) {
var private_value = {};
propertyList["get_" + index] = function () { return private_value; }
propertyList["set_" + index] = function (value) {
// Set the value
private_value = value;
// Invoke the callback
nameCallbackCollection[index](value);
}
}
return propertyList;
}
这是一个快速测试演示:
var boundProperties = BoundPropertyList({
TheTime: function (value) {
$('#thetime').text(value);
},
TheDate: function (value) {
$('#thedate').text(value);
}
});
var number = 0;
setInterval(function () {
boundProperties.set_TheTime(new Date());
boundProperties.set_TheDate(number++);
}, 500);
但是,由于某种原因,没有正确分配属性或其他东西。也就是说,set_TheTime
出于某种原因调用会执行回调set_TheDate
,就好像它只将所有内容绑定到列表中的最后一项一样。我一生都无法弄清楚我做错了什么。