jquery - Knockout.js - ko.mapping.fromJS - 可见绑定(bind)未更新

标签 jquery asp.net-mvc-4 knockout.js asp.net-web-api

我正在开发一个网站,该网站每 5 秒更新一次页面上的值,它调用远程数据库并通过 Get Json 调用返回 MVC 模型,然后调用

viewModel = ko.mapping.fromJS(model)

然后,我使用另一个 Get 调用每 5 秒更新此 View 模型,然后调用此映射调用

 viewModel = ko.mapping.fromJS(model, viewModel). 

我的 HTML 元素上的绑定(bind)是正确的,因为从数据库检索的原始模型显示在屏幕上,但当模型上的 IsVisible 属性没有任何反应时,即表行应设置为不可见,而另一个应设置为可见。

每次更新时,模型应该不同,行设置为可见或不可见以及其他跨度的文本更新,这部分正在工作,并且更新显示在页面上,只是可见性没有改变。

HTML发挥可见不可见的问题,用Javascript进行更新调用。

模型中的所有变量都被正确调用,我无法向公众发布模型。

<table class="SelectionTable" cellpadding="0" cellspacing="0">
    <tbody data-bind="foreach: { data: markets.Selections, as: 'selections' }">
       <tr class="Selection">
          <td><span data-bind='text: selections.Number, visible: selections.IsVisible'></span></td>
          <td><span data-bind='text: selections.Name, visible: selections.IsVisible'></span></td>
          <td><span data-bind='text: selections.CurrentPrice, visible: selections.IsVisible'></span></td>
          <td><span data-bind='text: selections.OpeningPrice, visible: selections.IsVisible'></span></td>
       </tr>
    </tbody>
</table>

<script type="text/javascript">
    var viewModel;
    var self;

    var getUpdates = setInterval(function () {
        $.getJSON(
            "/Home/Get", {},
            function (model) {
                viewModel = ko.mapping.fromJS(model, viewModel);
            });
    }, 5000);

    $(document).ready(
        function () {
            $.getJSON(
                "/Home/Get", {},
                function (model) {
                    viewModel = ko.mapping.fromJS(model);
                    bindViewModel();
                });
        });

    function bindViewModel() {
        ko.applyBindings(viewModel);
    }
</script>

最佳答案

我发现您有时需要在更新 View 模型时提供空映射:

ko.mapping.fromJS(model, {}, viewModel);

如果失败,请输出 selections.IsVisible 的值,并确保其格式可以解析为 true 或 false。

关于jquery - Knockout.js - ko.mapping.fromJS - 可见绑定(bind)未更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17526508/

相关文章:

javascript - 使用 Shopify Liquid 元字段的变体相关产品

c# - OAuth 异常问题

asp.net-mvc - MVC 部分 View [Display(Name = "")] 可以在没有 DisplayFor 或 EditorFor 的情况下使用

javascript - 如何根据本地时间是否等于 “startdate” 和 “enddate” Jquery 之间来显示/隐藏跨度

jquery - 显示每个div的高度值

javascript - 如何根据先前的下拉菜单禁用下拉菜单?

asp.net-mvc-4 - WebSecurity.CreateUserAndAccount 获取对创建用户的引用

json - 避免 TypeError : Converting circular structure to JSON

javascript - 使用 ViewModel 构造函数 knockout 虚拟组合

jquery - Knockoutjs 动态模板并将 jquery 效果应用于可见性过渡