ember.js - 如何在 Ember.js 中渲染从计算属性返回的值?
问题描述
我的组件模板中有以下代码:
<th scope="row">{{@order.id}}</th>
<td>Name: {{@order.customer_name}}
</td>
<td>Delivery address: {{@order.address}}
Products in order: {{@order.products}}
Items: {{items}}
<td>{{@order.total_price}}$</td>
</tr>
我有我的计算属性,它应该返回并呈现从数据库返回的对象数组中的每个产品名称:
items: computed('order.products', function() {
let products = this.get('order.products');
products.forEach(product => {
for(let i=0; i<products.length; i++){
return console.log(products[i].name);
}
});
}),
当我运行以下一切正常时,名称显示在控制台中,如下所示:
Cheese on toast
3 Pizza
2 Macaroons bowl
但是,当我尝试删除 console.log 并返回 products[i].name 时,似乎没有返回任何内容。我是否遗漏了某些内容或试图在我的页面上错误地呈现它?
解决方案
从片段中,我假设您只想从items
计算属性返回产品的名称。如果是这样,那么这里有一些问题是处理循环而不是实际计算的属性。
因此,在您的情况下,您可以使用map从 products 数组中仅过滤掉产品的名称。
items: computed('order.products', function() {
let products = this.get('order.products');
let productNames = products.map((product) => {
return product.name;
});
return productNames;
})
此外,计算属性仅保留从定义返回的值。因此,您需要显式返回值,如上面的代码片段 ( return productNames
) 所示。
推荐阅读
- javascript - 在没有托管的情况下呈现 Node JS webapp
- android - addRemoteCandidate 超时。考虑发送候选人结束通知
- c# - DataGridView - 组合框作为标题单元格
- python - 将 HTML-source 作为 HTML 对象获取,并能够使用 DOM 操作在其中工作
- powershell-4.0 - 使用 powershell 在 Windows Server 中提供挂载点的权限
- pyspark - 如果不使用 spark-ml 中的管道,交叉验证会更快吗?
- sapui5 - 在根视图的 onInit() 中设置模型时出错 - 没有错误/没有日志
- python - 有时会出现“未安装 tesseract 或不在您的路径中”
- java - 将数字四舍五入到 10^ 形式 JAVA
- codenameone - 离线地图在模拟器和应用程序上显示空白屏幕