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"
如果这是不可能的,也许有人可以建议另一种方法来实现一个条件块,它只显示绑定值是否未定义?
我只是花了很多时间来解决这个问题并找到了某种解决方案。我查看了带有 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方法并创建了一个匿名视图。唯一的问题是观察者将匿名视图置于渲染模式,而没有首先将原始视图置于相同的模式。
至少我认为是这样的。无论如何,它现在对我有用。也许这是一个错误?