1

以下のコードは私のために働きます

<div id="TickerBox" style="float: right;">
    Newly Added Customer  :<span data-bind="text: lastCustomer"></span><br />
    Newly Added Product   :<span data-bind="text: lastProduct"></span><br />
    Newly Added Company   :<span data-bind="text: lastCompany"></span><br />
    Total No of Customers :<span data-bind="text: customerCount"></span><br />
    Total No of Products  :<span data-bind="text: productCount"></span><br />
    Total No of Companies :<span data-bind="text: companyCount"></span><br />
</div>

<script type="text/javascript">
    var myViewModel =
        {
            lastCustomer: ko.observable(''),
            lastProduct: ko.observable(''),
            lastCompany: ko.observable(''),
            productCount: ko.observable(0),
            customerCount: ko.observable(0),
            companyCount: ko.observable(0)
        }

    ko.applyBindings(myViewModel, document.getElementById('TickerBox'));

    $.getJSON('/api/product', function (data) {
        myViewModel.companyCount(data.companyCount);
        myViewModel.customerCount(data.customerCount);
        myViewModel.productCount(data.productCount);
        myViewModel.lastCompany(data.lastCompany);
        myViewModel.lastCustomer(data.lastCustomer);
        myViewModel.lastProduct(data.lastProduct);
    });
</script>

しかし、AJAXリクエストを呼び出すときにJSONオブジェクトと直接バインドできるようなViewModelを作成したかったのです。毎回各オブザーバブルに値を割り当てる代わりに、ViewModelをコレクションとして最適化できますか?

4

1 に答える 1

4

ノックアウトマッピングプラグインを見たことがありますか?

次のように使用します。

var viewModel = ko.mapping.fromJSON(data);

getJSON成功関数内。

于 2013-03-26T11:36:04.063 に答える