簡體   English   中英

使用基因敲除.js更新整個對象的值綁定?

[英]Update entire object with value binding on select with knockout.js?

我有一個選擇下拉菜單,其中顯示了一個對象列表,其中name屬性是顯示的文本, id屬性是每個選項綁定到的value: user.id ,以及一個value: user.id綁定,來自另一個屬性賓語。

<td data-bind=""><select data-bind="options: peopleResponsible, optionsText: 'name', optionsValue: 'id', value: user.id"></select></td>

當我從下拉列表中選擇一個新的人物對象時,只有userid正在更新。 其他所有屬性(名稱,用戶名,年齡等)均未更新。

我需要做的是,當選擇了新的peopleResponsible選項時,我希望它可以將所有屬性從該對象復制到user對象。

我有一種懷疑,由於user對象本身是不可觀察的,因此它目前無法使用,只有其屬性可以使用。 這是我的數據被映射的方式:

ko.mapping.fromJS(taskOutlines, {}, mappedTaskOutlines);

其中TaskOutline包含許多Tasks ,而每個Task包含一個User

有任何想法嗎?

你可以這樣做:

 var vm = { peopleResponsible: ko.observableArray([{ id: ko.observable(1), name: ko.observable("p1") }, { id: ko.observable(2), name: ko.observable("p2") }, { id: ko.observable(3), name: ko.observable("p3") }]), selectedUser: ko.observable() } vm.selectedUser(vm.peopleResponsible()[1]); // pre select a user ko.applyBindings(vm); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script> <select data-bind="options: peopleResponsible, optionsText: 'name', value: selectedUser"></select> <div data-bind="with: selectedUser"> <p>Id: <label data-bind="text: id"></label> </p> <p>Name: <label data-bind="text: name"></label> </p> </div> 

進行選擇時,該選擇將引用可觀察數組,屬性以及所有對象中的任意對象。 然后,將所選對象放置在可觀察到的“ selectedUser”中。

簡而言之,刪除“ optionsValue”綁定將綁定整個對象而不是id屬性。

value綁定僅設置一個可觀察值。 不知道如何使用事物,很難說應該怎么做才能獲得想要的結果。 一種可能性是制作一個執行復制並subscribe user.id

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM