Ember bound block helper

时间:2013-01-11 04:56:00

标签: ember.js handlebars.js

我想知道ember中的registerBoundHelper是否意味着能够处理块样式的助手。例如,我创建了以下内容:

Ember.Handlebars.registerBoundHelper('unlessUndefined', (context, options) ->
  unless typeof context == "undefined"
    return options.fn(this)
  else
    return options.inverse(this)
)   

想法是这样使用它:

{{#unlessUndefined choice}}
  {{#if choice}}
    <p>You chose yes</p>
  {{else}}
    <p>You chose no</p>
  {{/if}}
{{else}}
  <p>Make a choice</p>
{{/unlessUndefined}}

option.fn(this)部分内容似乎不呈现任何输出。执行此操作时,我在控制台中收到一条错误消息:“您无法在渲染过程之外使用appendChild”

如果这是不可能的,也许有人可以建议另一种方法来实现一个条件块,只显示绑定值是否未定义?

1 个答案:

答案 0 :(得分:4)

我只是花了很多时间来对抗这个问题并找到了解决方法。我通过执行registerBoundHelper方法查看了pull请求。

我在上面添加了以下内容: https://github.com/emberjs/ember.js/pull/1274/files#L0R357

Ember.run.scheduleOnce('render', view, 'rerender')

看起来boundHelper方法只包装原始的帮助器方法并创建一个匿名视图。唯一的问题是观察者将匿名视图放入渲染模式而不将原始视图放在同一个视图中。

至少这就是我的想法。无论如何,它现在对我有用。也许这是一个错误?