Tôi có một chế độ xem SwiftUI có trong một môi trường được gọi là appModel
. Sau đó nó đọc giá trị appModel.submodel.count
trong body
phương thức của nó . Tôi hy vọng điều này sẽ ràng buộc quan điểm của tôi với tài sản count
trên submodel
để nó hiển thị lại khi tài sản cập nhật, nhưng điều này dường như không xảy ra.
Đây có phải là một lỗi? Và nếu không, cách thành ngữ để có các khung nhìn liên kết với các thuộc tính lồng nhau của các đối tượng môi trường trong SwiftUI là gì?
Cụ thể, mô hình của tôi trông như thế này ...
class Submodel: ObservableObject {
@Published var count = 0
}
class AppModel: ObservableObject {
@Published var submodel: Submodel = Submodel()
}
Và quan điểm của tôi trông như thế này ...
struct ContentView: View {
@EnvironmentObject var appModel: AppModel
var body: some View {
Text("Count: \(appModel.submodel.count)")
.onTapGesture {
self.appModel.submodel.count += 1
}
}
}
Khi tôi chạy ứng dụng và nhấp vào nhãn, thuộc count
tính sẽ tăng nhưng nhãn không cập nhật.
Tôi có thể khắc phục điều này bằng cách chuyển vào appModel.submodel
như một tài sản ContentView
, nhưng tôi muốn tránh làm như vậy nếu có thể.