首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >依赖于其他异步计算属性的Vuejs计算属性

依赖于其他异步计算属性的Vuejs计算属性
EN

Stack Overflow用户
提问于 2017-10-14 18:05:34
回答 1查看 573关注 0票数 1

在我的Vuejs应用程序中,我需要将两个计算属性传递给一个名为avatar的组件:一个图像表面和一个字符串。

问题是,并不是所有的项目都有图片,如果没有图片,vuejs会抛出一个错误,因为它无法读取undefined的属性apples (因为album_id是未定义的)。

错误是从avatar组件中冗长的src属性引发的,如下所示:

代码语言:javascript
复制
<template>
    <div class="apples">
        <div id="mast" class="f3 b bb b--black-10">
            <h2 class="ttc">Apple's List</h2>
        </div>
        <div id="content">
            <li v-for="apple in apples" class="list-item">
                <avatar :src="apple[ 'album_id '][ 'apples' ][ '256' ]" :size="50" :appletype="apple.type"></avatar>
            </li>
        </div>
    </div>
</template>

<script>
    import Avatar from './Avatar.vue';
    import Apples from '@/api/apples';

    export default {
        name: 'apples',
        asyncComputed: {
            apples: {
                async get() {
                    const apples = await Apples.getAll();
                    return apples.data;
                },
                default: []
            }
        },
        components: {
            Avatar
        }
    };
</script>

在html模板中使用数据之前,我需要以某种方式处理从api接收到的数据,但我不确定如何继续。在get()函数中创建单独的图片数组似乎是错误的。

使用v-ifv-else检查是否有要传递的src属性似乎也很笨拙。

我是否要创建另一个单独的计算方法来迭代我的项列表,并获得图片src (如果该项有)?

EN

回答 1

Stack Overflow用户

发布于 2018-11-05 20:36:54

我建议你需要为你的苹果酱创建getters。呃..。来源..呃..。源:)

代码语言:javascript
复制
<template>
    <div class="apples">
        <div id="mast" class="f3 b bb b--black-10">
            <h2 class="ttc">Apple's List</h2>
        </div>
        <div id="content">
            <li v-for="apple in apples" class="list-item">
                <avatar :src="getAvatar(apple, 256)" :size="50" :appletype="apple.type"></avatar>
            </li>
        </div>
    </div>
</template>

<script>
    import Avatar from './Avatar.vue';
    import Apples from '@/api/apples';

    export default {
        name: 'apples',
        methods: {
            getAvatar: function(obj, id) {
                   return obj.album_id.apples[ id ] | ''
            }
        },
        asyncComputed: {
            apples: {
                async get() {
                    const apples = await Apples.getAll();
                    return apples.data;
                },
                default: []
            }
        },
        components: {
            Avatar
        }
    };
</script>

这允许您使用您选择的任何参数和实现创建一个优雅的后备。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46743282

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档