アウレリアコンポーネントにコンテナレス機能を使用すると、奇妙な動作が見られます。私たちはSVGコンテナ内にカスタム要素を作成しています。SVGコンテナ内でSVGElementsタグだけが許可されているため、コンテナレスタグを使用してカスタム要素タグをDOMに追加する必要がありました。 Aureliaリリース1.0.0を使用しており、webpackでSPAを構築しています。VMで 'コンテナレス'を使用した場合とカスタム要素でHTMLビューで 'コンテナレス'を使用した場合の違い
ここでは、コンテナレスの2つの実装を表示するgistrunの例を見つけることができます。 https://gist.run/?id=58ba6282ad54c1263eec3a141fe42183
この例では、2つのビューモデルを作成し、カスタム要素にバインドしました。 as-element="compose"
を使用して、私がviewmodelを作成し、AureliaがVMを作成すべきではないことをaureliaに伝えます。 ViewModelにで@containerless
タグを持っていますが、HTMLビューで「無容器」を持っているdoesntの
CustomElement:カスタム要素にこれらの違いは、コンテナのないタグです。
withattrコンポーネントはHTMLビューではコンテナレスではありませんが、Aurelia HUBで説明されているように、ViewModelには
@containerless
というタグがあります。
私は両方の状況で青い矩形が表示されると予想しています。 customelementタグは、コンテナレスタグのためAureliaによって削除されます。しかし@containerless
タグdoesntのは、実装にと、動作しているようです。2.
質問:これらの実装が異なる出力を持っている理由 任意の手掛かり? どちらが正しいですか? Aurelia Docsに記載されているように、@containerless
タグをviewmodelに配置する必要があります。
任意の助けいただければ幸い:)
ご清聴ありがとうございます。 'as-element =" compose "を取り除くと、aureliaは独自に作成したVMの代わりにViewModelを自動的に作成し、VMをより詳細に制御します。 私はSVG要素を使用しているので、コンテナレスでSVG要素が表示されないので、SVGE要素だけを使用できるので、推奨されていませんが、推奨されませんが、 '@ containerless'タグが必要です。 明日あなたの作成提案について見ていきます。今は時間がなくなりました。 – Henry
ああ、私は必ずしも '@ containerless'そのもの、つまりブラウザ固有の癖に特に敏感な' as-element 'との組み合わせではないと主張しました。 VMのインスタンス化を制御する特別な理由はありますか?おそらく、そこには別の方法があります。 –