web-dev-qa-db-ja.com

Angularディレクティブの分離スコープのオプションの双方向バインディング

質問

私はあなたがオプションの「リバース」またはコールバックバインディングを持つことができることを学びました:

_scope: { parentScopeFunc: '&?' }
_

私は、双方向バインディングで同様のことを行う方法があるかどうかを確認しようとしています。

_scope: { optional2WayBoundProp: '=?' }
_

リンク関数のelementattrs paramsを試しましたが、親への双方向バインディングが失われました。その方法では、親から子への更新のみが可能です。次に、_@_スコープメカニズムを使用しているだけかもしれません。

編集する

私はこの質問を見つけました Angular JSディレクティブ、リンク関数の2ウェイデータバインディングを変更します なので、_=?_に関する主な質問に答えます。ただし、truefalseなどの「オプションの」非バインド値は解決されません。

ゴール

これが私が達成しようとしていることです:

  • コンテンツをトランスクルードし、ヘッダー領域とは別に折りたたみ可能なパネルディレクティブを記述します。
    <my-panel> <transcluded-header-content/> <button ng-click="toggleCollapse()"/> <transcluded-body-content ng-if="isExpanded"/> </my-panel>

  • 場合によっては、パネルインスタンスの折りたたまれた状態を親スコープにキャッシュする必要があります(したがって、ビューのコントローラーがこの情報をキャッシュする方法を決定できる双方向バインディング)。

    _<my-panel is-expanded="parentScopeProp">_

  • 他の場合では、親スコーププロパティにバインドせずにそれを宣言したいだけかもしれませんORまったく宣言しないかもしれませんが、その場合は展開されていると想定します。

    _<my-panel is-expanded="true/false">_

_=_割り当てを使用すると、undefinedtruefalseなどの式を評価できないことを理解しています。

22
jusopi

'=?'は、ng 1.2.x以降の有効なスコープ割り当てです...

...オプションの双方向バインディングから式を補間する手段を持つ機能に関しては、それはまだグラブのためです。

36
jusopi