【问题标题】:How to pass a observable property (of knockout) to view如何将可观察的属性(淘汰赛)传递给查看
【发布时间】:2013-10-13 13:52:03
【问题描述】:

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

的隐藏字段

$("#hiddenUser").val(vm.selectedUser);

请帮忙。 谢谢

【问题讨论】:

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

标签: jquery knockout.js razor-2


【解决方案1】:

您可以订阅更改以做到这一点

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

或者只是将隐藏字段绑定到您的可观察对象,这也应该可以工作

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      不需要 jQuery 和订阅,只需将隐藏的输入直接绑定到 selectedUser 可观察对象:

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

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

      [并不是说这是广告,但如果您有兴趣,这是我在 WintellectNOW dot com 上一起使用 Knockout 和 MVC 的视频中演示的项目之一。]

      【讨论】:

        猜你喜欢
        • 2012-12-02
        • 2014-06-13
        • 2014-11-05
        • 2012-09-08
        • 2012-07-07
        • 2015-01-25
        • 1970-01-01
        • 2015-10-05
        相关资源
        最近更新 更多