2016-08-10 6 views
2

これは簡単な修正だと確信していますが、私はこれを理解しようとしている私の脳を破壊しています。Knockout.js - 正しくバインドされていないように見える理由がわからない

以下はコードの主要部分です。

JS

//Viewmodel 
var PurchaseOrderModel = function() { 
    var self = this; 

    self.OrderNumber = ko.observable(); 
    self.Description = ko.observable(); 

    self.GetPurchaseOrder = function(Id) { 
     // 
     $.ajax({ 
      type: "GET", 
      url: 'URL' + Id, 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: function (data) { 
       self.OrderNumber = ko.observable(data.OrderNumber); 
       self.Description = ko.observable(data.Description); 
      }, 
      error: function (err) { 
       alert(err.status + " : " + err.statusText); 
      } 
     }); 
    } 
} 

//DOM Loaded 
$(document).ready(function() { 
    var po = new PurchaseOrderModel(); 
    ko.applyBindings(po); 

    po.GetPurchaseOrder(124028); 
}); 

HTML

<div> 
    <input id="test" type="text" data-bind="value: OrderNumber"> 
    <input type="text" data-bind="value: Description"> 

    <p type="text" data-bind="text: OrderNumber"></p> 
</div> 

コントローラーこれは私がNETWインスペクタで見たものである

return Json(new 
    { 
     OrderNumber = model.OrderNumber, 
     Description = model.Description 
    }, JsonRequestBehavior.AllowGet); 

orkタブ

{"OrderNumber":115548,"Description":"Test"} 

データが返されているので、私はUIがそれを適切にキャッチしていないのか不思議です。

洞察力がありがとう!

答えて

2

の代わりにあなたがここで行うように新しいものと古い、観察を置き換える:

success: function (data) { 
    self.OrderNumber = ko.observable(data.OrderNumber); 
    self.Description = ko.observable(data.Description); 
} 

あなたが持っているにはそうのように、あなたはすでに新しい値で定義した、観察を設定しました

success: function (data) { 
    self.OrderNumber(data.OrderNumber); 
    self.Description(data.Description); 
} 
+0

ありがとうございました:)それは簡単な修正だと分かっていましたが、入手方法はわかりませんでした。 –

関連する問題