我们如何将参数传递给viewModelin Jetpack Compose?
这是我的可组合项
@Composable
fun UsersList() {
val myViewModel: MyViewModel = viewModel("db2name") // pass param like this
}
Run Code Online (Sandbox Code Playgroud)
这是viewModel
class MyViewModel(private val dbname) : ViewModel() {
private val users: MutableLiveData<List<User>> by lazy {
MutableLiveData<List<User>>().also {
loadUsers()
}
}
fun getUsers(): LiveData<List<User>> {
return users
}
private fun loadUsers() {
// Do an asynchronous operation to fetch users.
}
}
Run Code Online (Sandbox Code Playgroud) 嘿,我正在创建一个 api 来返回用户及其个人资料
我有来自两个独立数据库的两个表,用户和配置文件
fn handle(
&mut self,
query_strings: SearchUsersQueryStrings,
_: &mut SyncContext<Self>,
) -> Self::Result {
let gateway_conn: &PgConnection = &self.1.get().unwrap();
let own_conn: &PgConnection = &self.0.get().unwrap();
let pattern = format!("%{}%", query_strings.username);
let found_users = users
.filter(username.like(pattern))
.get_results::<User>(gateway_conn)?;
let profile = Profile::belonging_to(&found_users)
.load::<Profile>(own_conn)?
.grouped_by(&found_users);
let data = found_users.into_iter().zip(profile).collect();
Ok(data)
}
Run Code Online (Sandbox Code Playgroud)
这里的坏处是数据类型结果是,解析起来非常难看
[
[
{
"id": 22,
"username": "412212512",
"email": "1231q1222122@gmail.com",
"avatar": null,
"created_at": "2022-02-21T09:31:29.855851"
},
[
{
"id": 3,
"user_id": 22,
"status": "qqq",
"description": "xxx",
"created_at": "2022-03-07T22:53:17.491532",
"updated_at": …Run Code Online (Sandbox Code Playgroud)