7

私は 5 秒ごとにページの値を更新する Web サイトに取り組んでおり、リモート データベースを呼び出し、Get Json 呼び出しを介して MVC モデルを返し、呼び出します。

viewModel = ko.mapping.fromJS(model).

次に、別の Get 呼び出しを使用してこのビュー モデルを 5 秒ごとに更新し、このマッピング呼び出しを呼び出します。

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

データベースから取得された元のモデルが画面に表示されるため、HTML 要素のバインディングは正しいですが、モデルの 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>
4

1 に答える 1

2

ビューモデルを更新するときに、空のマッピングを提供する必要がある場合があることがわかりました。

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

それができない場合は、 の値を出力し、selections.IsVisibletrue または false に解決できる形式であることを確認します。

于 2013-07-08T13:06:37.673 に答える