ReactiveUI - ReactiveCommand为ReactiveList中的对象获取更多数据

时间:2015-06-30 20:57:19

标签: reactiveui

目前我正在学习ReactiveUI,我不知道如何解决这个问题。我想要实现的是一旦加载了反应列表(在这种情况下我使用命令从本地存储加载它)我希望能够触发反应列表中的每个项目然后关闭从api端点获取数据并更新视图模型。

我目前使用此逻辑加载和创建视图模型:

LoadSavedLocations = ReactiveCommand.CreateAsyncTask(async o => {
    var savedLocations = await _savedLocationService.GetUserSavedLocations();
    return savedLocations;
});

LoadSavedLocations.Subscribe(savedLocations =>
{
    foreach (var savedZone in savedLocations)
    {
        Zones.Add(new ZoneDetailViewModel() {
            ZoneId = savedZone.ZoneId,
            SavedName = savedZone.SavedName,
        });
    }
});

我希望能够拥有一个可以启动的命令(首次加载屏幕,然后当用户提示更新时 - 拉动重新加载)。

有两种方法我认为我可以做到这一点,但努力实现这一方法和代码。

选项1

循环ReactiveList中的项目的命令从Api中获取数据,然后根据

更新该视图模型。
UpdateZones = ReactiveCommand.CreateAsyncTask(async o =>
{
    foreach (var zone in Zones)
    {
        // Fetch
        // Await
        // Update view model
    }
    return null;
});

有了这个,我很困惑这个命令的返回类型只是new object()?有没有比这样循环更好的方法呢?

选项2

在视图模型ZoneDetailViewModel上有一个名为FetchExtraData的命令,它将从API返回数据,我可以在视图模型中订阅该命令并填充额外的属性。使用此方法,父视图模型如何触发ReactiveList中的所有项以触发其命令。

对于这两种方法,我不知道如何让ReactiveList中的每个项目都执行逻辑,这涉及到Api和更新。

0 个答案:

没有答案