Ember bound block helper

Dav*_*gle 7 handlebars.js ember.js

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

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

想法是这样使用它:

{{#unlessUndefined choice}}
  {{#if choice}}
    <p>You chose yes</p>
  {{else}}
    <p>You chose no</p>
  {{/if}}
{{else}}
  <p>Make a choice</p>
{{/unlessUndefined}}
Run Code Online (Sandbox Code Playgroud)

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

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

Pau*_*Dix 4

我只是花了很多时间来解决这个问题并找到了某种解决方案。我查看了带有 registerBoundHelper 方法实现的拉取请求。

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

Ember.run.scheduleOnce('render', view, 'rerender')
Run Code Online (Sandbox Code Playgroud)

看起来boundHelper方法只是包装了原始的helper方法并创建了一个匿名视图。唯一的问题是观察者将匿名视图置于渲染模式,而没有首先将原始视图置于相同的模式。

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