Ember 翻译——教程八:创建一个 Handlebars helper

20 篇文章 0 订阅

创建一个 Handlebars helper

到目前为止,我们的 app 是直接将从我们的 Ember Data 模型中将数据获取出来进而呈现给用户的。当我们 app 不断壮大,我们将希望在将这些在呈现给用户之前进行处理。由于这个原因,Ember 提供了 Handlebars 模板 helper 来在我们的模板中修饰数据。让我们使用一个 Handlebars helper 来让我们的用户快速知道一套房屋是单独的还是是一个社区的一部分。

一开始,让我们生产一个 rental-property-type 的 helper:

ember g helper rental-property-type

这将创建两个文件,包括我们的 helper 和它相关的测试文件:

installing helper
  create app/helper/rental-property-type.js
installing helper-test
  create tests/unit/helpers/rental-property-type-test.js

我们新的 helper 初始化时将自带一些生成器添加的示例代码:

app/helpers/rental-property-type.js

import Ember from 'ember';

export function rentalPropertyType(params/*, hash*/) {
  return params;
}

export default Ember.Helper.helper(rentalPropertyType);

让我们更新我们的 rental-list 组件模板来使用我们新的 helper 和传入 rental.type

app/templates/components/rental-listing.hbs

<article class="listing">
  <a {{action 'toggleImageSize'}} class="image {{if isWide "wide"}}">
    <img src="{{rental.image}}" alt="">
    <small>View Larger</small>
  </a>
  <h3>{{rental.title}}</h3>
  <div class="detail owner">
    <span>Owner:</span> {{rental.owner}}
  </div>
  <div class="detail type">
    <span>Type:</span> {{rental-property-type rental.type}} - {{rental.type}}
  </div>
  <div class="detail location">
    <span>Location:</span> {{rental.city}}
  </div>
  <div class="detail bedrooms">
    <span>Number of bedrooms:</span> {{rental.bedrooms}}
  </div>
</article>

理想情况下,我们将在我们第一条租赁信息中看见“Type: Standaone - Estate”。
然而,我们默认的模板 helper 将返回我们 rental.type 的值。让我们更新我们的 helper 来查看在 communityPropertyTypes 数组中是否存在这样一个属性。如果存在,我们将返回 CommunityStandalone

app/helpers/rental-property-type.js

import Ember from 'ember';

const communityPropertyTypes = [
  'Condo',
  'Townhouse',
  'Apartment'
];

export function rentalPropertyType([type]/*, hash*/) {
  if (communityPropertyTypes.includes(type)) {
    return 'Community';
  }

  return 'Standalone';
}

export default Ember.Helper.helper(rentalPropertyType);

Handlebars 会从模板中传递一个参数数组到我们的 helper 中。我们将使用 ES2015 解构来得到数组中的第一个元素,并且将其命名为 type。紧接着,我们可以检查 type 是否存在于我们的 communityPropertyTypes 数组。

现在,我们将在我们的浏览器中看到第一条租赁信息的属性被罗列为 “Standalone”,而另外两条的则是 “Community”。


原文地址

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值