我試圖編寫一些代碼來檢測角度中複雜的嵌套層次對象的更改。我希望$watch
或$watchCollection
表達式就足夠了,但這很難實現。觀察角度的複雜對象層次結構的深度和內容
有人可以提出一個好的方法來解決這個問題嗎?
數據結構我期待看的一個例子是(以JSON):
{
"$type":"<>f__AnonymousType7`2[[System.String, mscorlib],[System.Object, mscorlib]], VM.ConfigurationServer",
"Name":"DevelopmentEnvironment",
"Descendents":{
"$type":"<>f__AnonymousType7`2[[System.String, mscorlib],[System.Object, mscorlib]][], VM.ConfigurationServer",
"$values":[{
"$type":"<>f__AnonymousType7`2[[System.String, mscorlib],[System.Object, mscorlib]], VM.ConfigurationServer",
"Name":"MoreSpecificEnvironment",
"Descendents":{
"$type":"<>f__AnonymousType7`2[[System.String, mscorlib],[System.Object, mscorlib]][], VM.ConfigurationServer",
"$values":[{
"$type":"<>f__AnonymousType7`2[[System.String, mscorlib],[System.Object, mscorlib]], VM.ConfigurationServer",
"Name":"level3",
"Descendents":null
}]
}
}]
}
}
正如你所看到的JSON序列的TypeNameHandling設置爲所有,這是必要的其他地區系統。
我需要知道的是對任何嵌套對象的Name
屬性所做的任何更改,還可以添加或刪除Descendent
。
我曾經嘗試都
scope.$watch(<objectname>, function(){...}, true);
和
scope.watchCollection(<objectname>, function(){...}, true);
這兩者的檢測對頂級Name
和Descendents
性質,但沒有進一步的嵌套對象。
基於我的理解,這表明angular.equals
函數並沒有注意到頂層以下的變化。
有沒有辦法注入自定義的相等比較器?
有沒有辦法動態更改watchExpression
?因此,應用手錶中的每個對象的層次結構,並作爲層次結構的變化而變化的watchExpression
鑑於該數據由的WebAPI的服務器提供的是有一個簡單的方法來更改屬性的名稱,當數據到達(與修訂前改回已發佈到服務器) – MikeW
非常感謝@邁克爾 - 玫瑰,這曾經工作過,我添加了一個服務來更改基於替換數組的屬性名稱:請參閱我的'答案'(沒有足夠的空間來發布服務作爲評論) – MikeW