根据 knockout.js 中的值更改修改其他 属性
Modify other property on value change in knockout.js
如何在第一次设置date1时(更准确地说,当date2为null时)将date2设置为与date1相同的值?这个 logic/function 应该在将数据模型映射到可观察对象时引入(但是,date2 值不应该在映射时设置为 date1 值,只是在通过数据绑定设置时)。
数据模型
var dataModel = {
'agenda': {
months: [{date1: null, date2: null}],
}
}
绑定
data-bind="value: date1"
映射
var observableModel = ko.mapping.fromJS(dataModel);
我已尝试阅读 Knockout JS 文档,但未能找到如何使用我自己的函数拦截更新 date1 值的方法。
我知道 subscribe
但它确实为我提供了新的价值,而不是上下文。
您可以添加对 date1
可观察对象的订阅并像这样设置 date2
对象。
ko.utils.arrayForEach(observableModel.agenda.months(), function(obj){
obj.date1.subscribe(function(){ date2Handler(obj.date1, obj.date2)});
});
function date2Handler(date1,date2){
if(date2()==null)
date2(date1())
}
如何在第一次设置date1时(更准确地说,当date2为null时)将date2设置为与date1相同的值?这个 logic/function 应该在将数据模型映射到可观察对象时引入(但是,date2 值不应该在映射时设置为 date1 值,只是在通过数据绑定设置时)。
数据模型
var dataModel = {
'agenda': {
months: [{date1: null, date2: null}],
}
}
绑定
data-bind="value: date1"
映射
var observableModel = ko.mapping.fromJS(dataModel);
我已尝试阅读 Knockout JS 文档,但未能找到如何使用我自己的函数拦截更新 date1 值的方法。
我知道 subscribe
但它确实为我提供了新的价值,而不是上下文。
您可以添加对 date1
可观察对象的订阅并像这样设置 date2
对象。
ko.utils.arrayForEach(observableModel.agenda.months(), function(obj){
obj.date1.subscribe(function(){ date2Handler(obj.date1, obj.date2)});
});
function date2Handler(date1,date2){
if(date2()==null)
date2(date1())
}