我在.NET定義以下模型:結果JS變化子實體跟蹤
Public Class Request
<Key()>
Public Property RequestId As String
Public Property Description As String
Public Property InfoCards As List(Of InfoCard)
End Class
Public Class InfoCard
<Key()>
Public Property InfocardId As String
Public Property Description As String
Public Property RequestId As String
End Class
的ReqeuestId上的InfoCard屬性,使EF代碼第一次可以產生分貝。 然後我用UpshotContext
幫手產生像這樣的JavaScript型號:
Html.UpshotContext(bufferChanges:= true) _
.DataSource(Of UpshotTest.UpshotTest.RequestController)(Function(x) x.GetRequests()) _
.ClientMapping(Of UpshotTest.Models.Request)("Request") _
.ClientMapping(Of UpshotTest.Models.InfoCard)("InfoCard")
這將生成所有車型很好,當我打電話refresh
對結果數據源,如預期的數據檢索。
問題我面臨的是當我試圖修改一個子對象的屬性(例如Request.InfoCards(0).Description
)。更改該值將觸發InfoCard
中的更改,但不會觸發Request
實體中的更改。因此,呼籲Request.IsUpdated()
將返回假,同時呼籲Request.InfoCards(0).IsUpdated()
將返回真正。
結果不知道如何跟蹤子實體的變化?或者它是客戶端映射的問題? 到目前爲止,我已經嘗試了幾種映射:
手動映射所有屬性:
window.Request = function (initialData) { var self = this; self.RequestId = ko.observable(initialData.RequestId); self.Description = ko.observable(initialData.Description); self.InfoCards = ko.observableArray(ko.utils.arrayMap(initialData.InfoCards, function (data) { return new window.InfoCard(data); })); upshot.addEntityProperties(self, "Request:#UpshotTest.Models"); };
使用
upshot.map
:window.Request = function (initialData) { var self = this; upshot.map(initialData, upshot.type(Request), self); };
定義我自己地圖功能和傳遞結局:
window.Request = function (initialData) { var self = this; upshot.observability.configuration.map(initialData, upshot.type(Request), map, self); };
的映射似乎正確的所有方法,除父實體不知道在孩子做了修改。兒童跟蹤甚至可能嗎?