如何从 Observable Array 嵌套对象中获取值

Posted

技术标签:

【中文标题】如何从 Observable Array 嵌套对象中获取值【英文标题】:How to get value out of Observable Array nested object 【发布时间】:2020-02-08 10:17:47 【问题描述】: 我在这里搜索了这个问题的答案,但没有运气。

我有一个只包含一个条目的可观察数组:

我把它存储在 self.user()

POSData.Users.getByEmail(sEmail)
        .then(data => 
        //console.log(data)
        self.user.push(data);
    )

现在我只想提取一些值并将它们分配给它们自己的 observables,但是......我不能。

我已尝试以下方法来获取名字...

console.dir(self.user());

    //console.log(self.user()[0].data.firstName());
    //console.log(self.user().firstName());
    //console.log(self.user().data.firstName());
    //console.log(self.user()[0].data.firstName());
    //console.log(self.user().data[1].firstName());


有谁知道如何深入研究并获得我想要的信息?

感谢收看。

约翰

【问题讨论】:

尝试做一个 ko.toJS(self.user()) 看看你在推送信息后实际上最终得到了什么结构。 它显然是空的......这到底是什么?!?!怎么可能,当我 console.log self.user() 它在那里显示数据。 你能把它放在一个小提琴里吗(不需要敲除我只是想在上下文中查看代码) 【参考方案1】:

您将从服务返回的原始数据存储到阵列中。您应该以该形式访问该数据的成员。 firstName 属性不是可观察的,它只是 data 属性中的一个字符串,因此您不应将其称为可观察的。您的示例中唯一可观察到的显然是self.user

根据您的屏幕截图,您的新数据如下所示:


  data: 
    firstName: 'John',
    lastName: 'Smith'
  ,
  message: 'User retrieved successfully',
  status: null

如果您想在 user 数组中获取此对象的名字,您可以这样访问它:

self.user()[0].data.firstName

【讨论】:

以上是关于如何从 Observable Array 嵌套对象中获取值的主要内容,如果未能解决你的问题,请参考以下文章

将Observable的输出从Object转换为Array

使用 create 回调将嵌套对象映射为复杂 JSON 中的 observable

Knockout.js 使每个嵌套对象都成为 Observable

获取对象中 Observable<SomeObject> 的值

如何在 Angular 中管道/映射 Observable

从 URL 下载嵌套 JSON 并制作 Observable Object SwiftUI,错误:“在调用中缺少参数 'from' 的参数”