Knockout.js 管理数组时与敲除相关的对象属性

Knockout.js 管理数组时与敲除相关的对象属性,knockout.js,knockout-2.0,Knockout.js,Knockout 2.0,我有一个视图模型,它基本上是一个对象数组。该对象具有StartDate和EndDate属性。我正在尝试实现一个功能,其中数组中前一项的EndDate应该是当前项的StartDate的T-1。例如: 如果数组类似于: Type Start Date End Date ObjectA 5/1/2014 5/31/2014 ObjectB 6/1/2014 现在,当用户将ObjectB的开始日期更改为2014年6月15日时,Object

我有一个视图模型,它基本上是一个对象数组。该对象具有StartDate和EndDate属性。我正在尝试实现一个功能,其中数组中前一项的EndDate应该是当前项的StartDate的T-1。例如:

如果数组类似于:

   Type      Start Date       End Date
   ObjectA   5/1/2014         5/31/2014
   ObjectB   6/1/2014
现在,当用户将ObjectB的开始日期更改为2014年6月15日时,ObjectA的结束日期应自动更改为2014年6月14日


我如何通过淘汰赛来实现这一点?请提供帮助。

ObjectB开始日期应该是可见的。然后订阅observable属性,当它更改时,更改ObjectA的属性

function addDays(date, value) {
            return new Date(date.getFullYear(), date.getMonth(), date.getDate() + value, date.getHours(), date.getMinutes(), date.getMilliseconds());
        }

ObjectB.StartDate.subscribe(function (newDate){
  ObjectB.EndDate(addDays(newDate, -1));
});

谢谢你的帮助,托马斯。我对你的解决方案有两个问题:1。因为这是一个数组,所以我需要知道被修改的StartDate的数组索引,以确定要更新的正确EndDate字段。我怎么得到这个2.首先,我使用ko.mapping.fromJS(数据,{},self);绑定现有数据。如何在StartDate字段中添加订阅?看起来您最好的朋友类似于链表。使用fromJS完成映射后,需要迭代所有项并添加订阅。您可以将属性“previous”添加到每个项,以便在它发生更改时,您有一个指向上一项的指针。Subscribe函数接受第二个参数,“this”将绑定到该参数。请参见这里的示例:awooms!!成功了!!非常感谢你的帮助,托马斯。你就是那个男人!!:)