簡體   English   中英

把手幫助返回標記

[英]Handlebars helper to return markup

我有以下非常簡單的把手助手,它返回一個圖片網址:

Ember.Handlebars.registerHelper 'avatarUrl', (property, options) ->
  if value = Ember.get(this, property)
    if small_url = value.small_url
      return small_url

  '/images/fallback/small_default.png'

我用的是這樣的:

<img src="{{avatarUrl avatar}}" title="displayName">

上面的工作,但我想做的是返回整個img元素。

這是否可以使用handleabars幫助器?

精細的手冊 (在底部):

如果您的助手返回您不想轉義的HTML,請確保返回新的Handlebars.SafeString

因此,如果您希望助手返回完全形成的<img>元素,那么構建HTML字符串並將其包裝在Handlebars.SafeString

Ember.Handlebars.registerHelper 'avatarImg', (property, options) ->
  # Build your <img> HTML string and leave it in result ...
  new Handlebars.SafeString(result)

然后在你的模板中你應該能夠:

blah blah {{avatarImg ...}} blah blah

從你的{{avatarImg ...}}獲取<img>

您可以創建一個視圖來表示該圖像標記,然后在自定義幫助器中調用手柄視圖助手。 例如:

App.AvatarView = Ember.View.extend({
  tagName: 'img',
  attributeBindings: ['src']
});

Ember.Handlebars.registerHelper('avatarUrl', function(property, options) {
  var small_url, value;
  value = Ember.get(this, 'avatarUrl');
  if (value) {
    small_url = value.small_url;
  }
  var hash = options.hash;
  hash.src = small_url || '/images/fallback/small_default.png';

  Ember.Handlebars.helpers.view.call(this, App.AvatarView, options);

});

我在這里發布了一個工作示例: http//jsbin.com/adewot/1/edit

這是基於ember自己的linkTo幫助程序的工作方式。 要查看更高級的示例,請查看源代碼: https//github.com/emberjs/ember.js/blob/master/packages/ember-routing/lib/helpers/link_to.js#L83

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM