gpt4 book ai didi

javascript - 我应该在 Aurelia 生命周期的什么时候填充组件属性?

转载 作者:行者123 更新时间:2023-11-30 11:46:03 25 4
gpt4 key购买 nike

我有一个 Aurelia 组件,它有一些我想通过 API 调用初始化的属性(项目列表)。该项目列表最终将显示在 select 元素中。虽然该列表是空的,但我可以显示一个空的选择(或禁用它)。

我的问题是,当在 component lifecycle我应该填充项目列表吗?我看过这个answer这表明 attached。但我在想,因为它并不真正依赖于附加或绑定(bind)的组件,所以我会在构造函数中进行。

优点、缺点和影响是什么?

组件.js

@inject(WebApi)
export class MyComponent {

api = undefined;
items = undefined;

/**
* Creates the component
* @param api the web API
*/
constructor(api) {
this.api = api;
this.api.getItems().then(items => {
this.items = items;
});
}
}

组件.html

<template>
<div>
<select value.two-way="selectedItem">
<option repeat.for="item of items" model.bind="item">${item.id}</option>
</select>
</div>
</template>

最佳答案

作为一般性建议,我不会在构造函数中这样做。这适用于您正在编写的任何代码,无论是框架还是语言。构造函数应该做最少的必要工作来设置一个对象然后返回。诚然,您在这里使用了一个 promise ,所以构造函数仍然会很快完成,所以有一个论据 made 在这里没问题。

话虽这么说......

您将使用的回调将取决于用例。对于未由路由器加载的组件,您有三种选择:createdbindattached。在您的用例中,您可以在加载数据之前禁用 select 元素,因此可以使用 attached 回调。我个人可能会把这个电话放在这里。

如果在数据绑定(bind)之前需要数据,我会使用 created 回调。如果要检索的数据需要通过数据绑定(bind)接收的参数,我会使用 bind 回调。

关于javascript - 我应该在 Aurelia 生命周期的什么时候填充组件属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40936185/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com