7

我想知道 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”

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

4

1 回答 1

4

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

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

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

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

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

于 2013-02-07T22:11:30.843 回答