[英]Binding @Published property of parent view's viewModel to @Published property of child view's viewModel: SwiftUI
我有这个设置:父视图:PostsListView 子视图:PostEditView
我正在使用 MVVM,所以在 PostsListView
@ObservedObject var viewModel : PostsListViewModel
LazyVGrid(columns: columns) {
ForEach(viewModel.posts, id: \.self) { post in
NavigationLink(
destination: PostEditView(viewModel: PostEditViewModel(post: post))){
Text(post: post)
.lineLimit(3)
}
}
}
我将视图模型(PostEditViewModel(post:))从父视图传递给 childView。
我不确定如何在两个视图的视图模型中绑定这个“帖子”object。
仅供参考视图模型:
PostsListViewModel:
class PostsListViewModel: ObservableObject{
@Published var posts: [Post]
//api operations....
}
PostEditViewModel:
class PostEditViewModel: ObservableObject{
@Published var post: Post
//custom Post mutation and api operations....
}
您不需要执行任何特殊的组合操作。 只需确保Post
是一个引用类型 ( class
) 并将Post
实例从PostListViewModel.posts
给PostEditViewModel.post
,这样每当您在子 VM 中更改Post
object 的任何属性时,相同的更改将反映在父 VM 也是如此,因为Post
object 是一个引用类型,并且两个 VM 都引用了相同的 object。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.