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 に答える