Javascript 更新布局时将淘汰对象复制到另一个对象

Javascript 更新布局时将淘汰对象复制到另一个对象,javascript,knockout.js,Javascript,Knockout.js,当用户在可观察数组中选择一个对象时,我想将其复制到“selectedObject”中。但当我这样做时,“SelectedObject”上的布局绑定不会更新 所以我创建了一个更新方法,但是我发现它很难维护。有更好的办法吗 这是我选择的对象ui: <div class="row" data-bind="with: SelectedFlightObject"> <div>select object:</div> <div data-bind="

当用户在可观察数组中选择一个对象时,我想将其复制到“selectedObject”中。但当我这样做时,“SelectedObject”上的布局绑定不会更新

所以我创建了一个更新方法,但是我发现它很难维护。有更好的办法吗

这是我选择的对象ui:

<div class="row" data-bind="with: SelectedFlightObject">
    <div>select object:</div>
    <div data-bind="html: FlightNumber"></div>
</div>
下面是更新ui但很难维护的js

UpdateFlightObject: function (currentObj, newObj) {
    currentObj.AirplaneType(newObj.AirplaneType());
    currentObj.ArrivingDate(moment(newObj.ArrivingDate()));
    currentObj.FlightNumber(newObj.FlightNumber());
    currentObj.Duration(newObj.Duration());
    currentObj.ArrivalCode(newObj.ArrivalCode());
    currentObj.DeparturCode(newObj.DeparturCode());
},


this.OnFlightClick = function (selectObject) {
    FlightFactory.UpdateFlightObject(this.SelectedFlightObject, selectObject);
}.bind(this);

淘汰赛要求你使用他们的可观察包装。这些包装器是魔法发生的地方,一旦绑定,它们就是报告值变化并接收用户输入的东西。您的代码应该是这样的

创建:

this.SelectedFlightObject = ko.observable(someInitialValueOrNull);
检索:

this.SelectedFlightObject();
更新:

this.SelectedFlightObject(someNewValueOrNull);

您应该使您的
SelectedFlightObject
可见,以便在其更改时更新布局

this.OnFlightClick = function (selectObject) {   
    this.SelectedFlightObject(selectObject);
}.bind(this);
您的初始
SelectedFlightObject
当然需要有一些航班号的初始值,等等


记住,这样做不会创建新对象

是的,它正在工作。我不知道我怎么没有想到这一点。我非常确定这个方法不适用于嵌套的可观察属性
this.OnFlightClick = function (selectObject) {   
    this.SelectedFlightObject(selectObject);
}.bind(this);