我有这个设置: 父视图:PostsListView 子视图:PostEditView
我在 PostsListView 中使用 MVVM
@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。
我不确定如何在两个视图的 viewModel 之间绑定这个“post”对象。
仅供参考视图模型:
PostsListViewModel:
class PostsListViewModel: ObservableObject{
@Published var posts: [Post]
//api operations....
}
PostEditViewModel:
class PostEditViewModel: ObservableObject{
@Published var post: Post
//custom Post mutation and api operations....
}
答案 0 :(得分:0)
您不需要进行任何特殊的合并操作。只需确保 Post
是引用类型 (class
) 并将 Post
实例从 PostListViewModel.posts
传递到 PostEditViewModel.post
,这样每当您改变子 VM 中的 Post
对象,相同的更改也将反映在父 VM 上,因为 Post
对象是引用类型,并且两个 VM 都引用了相同的对象。>