如何传递一个可观察的属性(击倒)来查看

时间:2013-10-13 13:52:04

标签: jquery knockout.js razor-2

我正在使用ko.observableArray([])绑定下拉列表。这里我在vm.selectedUser中捕获选定的值,这是一个ko.observable()。我想将此值分配给onchange事件中的隐藏字段@ Html.HiddenFor(m => m.UserName,new {id =“hiddenUser”})

$( “#hiddenUser”)VAL(vm.selectedUser);

请帮忙。 谢谢

3 个答案:

答案 0 :(得分:0)

您可以订阅更改以执行此操作

vm.selectedUser.subscribe(function(newValue) {
    $("#hiddenUser").val(newValue));
});

或者只是将隐藏字段绑定到您的observable,这也应该起作用

@Html.HiddenFor(m => m.UserName, new {id="hiddenUser",data_bind = "value: selectedUser" })

答案 1 :(得分:0)

你可以做一些事情like this 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>

您还可以查看Fiddle Example by RP Niemeyer

答案 2 :(得分:0)

不需要jQuery和订阅,只需将隐藏的输入直接绑定到selectedUser observable:

@Html.HiddenFor(m => m.UserName, new {id="hiddenUser", data_bind="value: selectedUser" })

请注意,它是“data_bind”而不是“data-bind”。在Razor中,破折号是无效的名称字符,但它会自动将下划线转换为破折号。

[这并不意味着这是一个广告,但这是我在视频中展示的一个项目,如果你有兴趣,可以在WintellectNOW dot com上一起使用Knockout和MVC。]