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