1

ページに 2 つのノックアウト ビュー モデルがあります。最初のビュー モデルの値を ajax ポストに送信してデータを取得し、最初のビュー モデルから渡された値に基づいて 2 番目のビュー モデルに追加したいと考えています。

私がやろうとしているのは、特定の注文番号の注文の詳細を取得できるように、注文 ID を変数として 2 番目の Ajax 投稿に渡すことです。

次のようなタグをデータバインドします。

<a data-bind="attr: { href: Url, title: Detail }, text: OrderNumber"></a>

最初の ViewModel の一部を次に示します。

      var OrderDS = function (data) {
      var self = this;
      self.OrderNumber = ko.observable(data.OrderNumber);
      self.Url = ko.observable("#");
      self.Detail = ko.observable("Product Details For This Order");
     }

Observable OrderNumber を変数としてセカンダリ Ajax Post に渡したい:

 $.ajax({
            url: "AccountsReceivible.aspx/GetOrderDetails",
            data: '{}', //How Do I ADD the Selected Value Here???
            type: "POST",
            contentType: "application/json; charset=utf-8",
            dataType: "JSON",
            timeout: 10000,
            success: function (Result) {
                var MappedDetail =
              $.map(Result.d,
             function (item) {
                 return new OrderDetailDS(item);
             }
               );
                self.OrderDetail(MappedDetail);

            },
            error: function (xhr, status) {
                alert(status + " - " + xhr.responseText);
            }
        });
4

1 に答える 1

1

JSON を文字列として記述する必要はありません。実際の JS オブジェクトを提供するだけです。

data : { orderNumber : self.OrderNumber() }

self(それがビューモデルであると仮定)

編集:

ビューモデル間の関連付けについては、自分で注意する必要があります。あなたの場合:

var OrderDetailViewModel = function (OrderDetail) {
    var self = this;
    var orderViewModel = OrderViewmodel;

self ここでorderViewModel、最初のコード スニペットのを置き換えます。

于 2013-01-23T11:04:47.260 に答える