[英]How to pass a observable property (of knockout) to view
我有一個與ko.observableArray([])綁定的下拉列表。 在這里,我正在vm.selectedUser中捕獲選擇的值,這是一個ko.observable()。 我想將此值分配給onchange事件@ Html.HiddenFor(m => m.UserName,新{id =“ hiddenUser”})上的隱藏字段
$(“#hiddenUser”)。val(vm.selectedUser);
請幫忙。 謝謝
您可以訂閱更改以執行此操作
vm.selectedUser.subscribe(function(newValue) {
$("#hiddenUser").val(newValue));
});
或只是將隱藏字段綁定到您的可觀察范圍,這也應該起作用
@Html.HiddenFor(m => m.UserName, new {id="hiddenUser",data_bind = "value: selectedUser" })
您可以執行類似DEMO的操作 (我以自己的編碼風格創建了小提琴,抱歉,可能與您不匹配,抱歉!)
假設,
var Users = ko.observableArray([]);//Your User List
var SelectedUser=ko.observable();//Your Dropdown selected Item, can be ID or Name.
您可以為下拉菜單的更改事件編寫/定義函數:-
function selectionChanged(data){
console.log(SelectedUser());
$('#hiddenUser').val(SelectedUser());//Displaying it in Textbox
$('#hiddenUser2').val(SelectedUser());//Saving it in hidden field
};
我的HTML標記如下:
<select data-bind="options: Users, optionsText: 'Name', optionsValue: 'Id',value: SelectedUser,event: { change: selectionChanged }"></select>
<input type="text" id="hiddenUser"></input>
<input type="hidden" id="hiddenUser2"></input>
您還可以查看RP Niemeyer的Fiddle示例
無需jQuery和訂閱,只需將隱藏的輸入直接綁定到selectedUser可觀察的對象即可:
@Html.HiddenFor(m => m.UserName, new {id="hiddenUser", data_bind="value: selectedUser" })
請注意,它是“ data_bind”而不是“ data-bind”。 在Razor中,破折號是無效的名稱字符,但是它將自動將下划線轉換為破折號。
[這並不意味着要成為廣告,但這是我在視頻中演示的關於在WintellectNOW dot com上同時使用Knockout和MVC的項目之一。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.