0

クライアント側から、JSONで3つの異なるドメインモデルを提供するRESTサービスに対して複数のajax呼び出しを行う必要があります。クライアント側では、コントロールにバインドする前に、それらをビューモデルに変換する必要があります。これは、プレゼンテーションのみのデータを使用して、それらを完全に異なる構造に変換することを意味します。どんなアイデアや提案も役に立ちます。

4

3 に答える 3

0

http://jsfiddle.net/sujesharukil/RJGQw/

var vm1 = {
    Id: 1,
    Name: 'some name',
    Address1: 'Some street somewhere',
    City: 'New York',
    Country: 'USA',
    Zip : '11111'
};

var vm2 = {
    title: 'Mr',
    designations: ['Chief', 'Boss', 'Lord'],
    secrets: ['xxxxx','yyyyy','zzzzz']
};


var vmCombines = function(data1, data2){
    return {
        combinedName: ko.observable(data2.title +  ' ' + data1.Name),
        designation: ko.observable(function(){
            if(data2.designations.length == 0)
                return '';

            return data2.designations.join();
        }()),
        Address: ko.observable(function(){
            return data1.Address1 + ', ' + data1.City + ',' + data1.Country + ',' +     data1.Zip
        }())
    }
};

ko.applyBindings(new vmCombines(vm1, vm2));

そしてHTML

<input type="text" data-bind="value: combinedName"/><br />
<input type="text" data-bind="value: designation"/><br />
<input type="text" data-bind="value: Address"/><br />
于 2013-03-15T14:40:08.407 に答える
0

var viewModel = JSON.parse(jsonContentFromService);

多分このようなもの:

var mainVM = {};

mainVM.SomeStuffFromVm1 = vm1.WhateverYouNeed
mainVM.SomeStuffFromVM2  = vm2.WhateveryYouNeed;
于 2013-03-14T02:31:45.490 に答える
0

シングルページWebアプリケーションに関するJohnPapaのコースを確認する必要があります。彼は、あなたのニーズに合うと確信しているアーキテクチャについて説明しています。彼はWebAPIを1つしか持っていませんが、複数を使用してもアーキテクチャに違いはありません。

model.employee簡単に言うと、クライアント側のオブジェクト(および)の形状を定義するモデルモジュールが必要ですmodel.customer。次に、ビューモデルモジュールには、(とりわけ)これらのオブジェクトの1つ以上を含むビューモデルが含まれます。たとえば、従業員オブジェクトvm.employeesのリスト( )が含まれ、関連する顧客を持つ従業員のリストが含まれます。オブジェクトからの部分データとオブジェクトからの部分データのみを持つビューモデルが必要な場合は、やなどの新しいモデルを定義してから、そのようなアイテムのリストを使用するビューモデルを定義する必要があります。ko.observableArrayvm.employeesAndCustomersko.observableArraymodel.employeemodel.customermodel.employeeBriefmodel.customerBrief

モジュールを使用dataserviceしてサービスからデータを取得し、モジュールdatacontextを使用して、受信したJSONをクライアント側(model。*)オブジェクトのリストに変換し、これらのリストをメモリに保持する必要があります。observableArraysビューモデルはから受け取りますdatacontext

はモジュールをdatacontext使用しmodel.mapperて、受信したJSONをクライアント側の形式に変換します。

于 2013-03-14T03:09:21.663 に答える