2013-05-06 35 views
4

我注意到,如果我沒有在我的任何web ui代碼中使用@observable,那麼所有字段/成員更改都將自動採用數據綁定語法。是否必須在每個字段上使用@observable?

我遇到的問題是在擴展WebComponent並應用@observable註釋的類中選擇一個字段時,現在其他字段不能正確綁定並顯示更改。

這是已知問題還是正確的功能?

如果我使用@observable註釋一次,是否應該將它應用於所有字段?

回答

4

正如另一篇文章中提到的,您可以選擇使用@observable來標記類。

你目前被觀察對象和觀察者之間夾在中間。觀察者(和派遣)是舊的方式,即將被淘汰。可觀察物是新的方法。爲了不破壞老客戶,我們讓觀察人員進來。如果您至少使用了一個@observable,則觀察者系統被禁用。

新的MDV v2實現正在準備中。我建議你使用@observable作任何你想觀察的東西。無處不在使用dispatch()。此外,請停止使用可觀察的頂級域,因爲它們不會綁定到節點中。

道歉,事情真的處於不穩定狀態。我懷疑事情很快就會解決。

我建議您閱讀關於MDV v2的更多信息:https://github.com/toolkitchen/mdv/blob/stable/README.md準備好進行更改。

我懷疑@observable將繼續是一個選項,所以現在繼續使用它是可以的。

+0

感謝您的回答。我試圖通過註釋類將所有Web組件類移動到@observable。這條路線沒有成功。我爲應用程序結構使用了MVVM類型的模式,不確定這種額外的間接級別是否會導致可觀察的失敗。打算製作一個較小的樣本來嘗試和重現。 – 2013-05-07 06:19:13

+0

如果觀察者不贊成,那麼生成的樣本不應該使用'@ observable'來替代嗎?事實上,說實話有點混亂。 – MarioP 2013-05-07 08:32:10

+0

@MarioP它確實令人困惑,一旦MDV v2的東西落地,我們將清理所有的文檔。對不起,這段時間的二元性。 – 2013-05-08 03:53:42

3

documentation here,這似乎是我的設計。 @observable的目標是將該成員標記爲有約束力的綁定,而不像其他人。

你也可以註釋類本身@observable如果你不想標註每個單獨的領域:Marking a class as @observable is the same as marking all of its fields as @observable

1

今天,我做了一個很好的發現約@observable:如果您更改之外的觀測值的組件飛鏢代碼(使用query("#component_id").xtag)時,該字段需要標記爲@observable - 否則,該值的更改將不會被該組件注意到。

或者,更改該值後,可以撥打dispatch()。我目前正在測試什麼更快,但我認爲它可能是註釋。

這不是對問題的直接回答,但在決定使用註釋還是不使用時,可能需要考慮這一點。

+0

謝謝,我儘量避免必須手動調度。在特定情況下,我正在處理這可能是合適的。 – 2013-05-07 01:44:54

相關問題