2017-05-05 19 views
2

私はカスタム属性を持つ状況をどのように扱うのですか。ページャであり、プロパティtotalItems、currentPage、itemsPerPageなどがあります。 numberOfPagesという計算されたプロパティもあります。カスタムプロパティの外でこのプロパティnumberOfPagesを "どのように"共有しますか? angleでは、$ scopeに設定します。オレリアではどうしますか?カスタム属性のプロパティを参照する

答えて

2

使用属性-name.ref

<div pager="..." pager.ref="pager"> 
    <span>${pager.numberOfPages} pages</span> 
</div> 

REF

は、HTML要素、コンポーネントまたはコンポーネントのパーツへの参照を作成します。

  • ref="someIdentifier"またはelement.ref="someIdentifier" - DOM内のHTMLElementへの参照を作成します。
  • attribute-name.ref="someIdentifier" - カスタム属性のビューモデルへの参照を作成します。
  • view-model.ref="someIdentifier" - カスタム要素のビューモデルへの参照を作成します。
  • view.ref="someIdentifier" - (HTML要素ではなく)カスタム要素のビューインスタンスへの参照を作成します。
  • controller.ref="someIdentifier" - カスタム要素のコントローラインスタンスへの参照を作成します。

- ここaurelia docs

ワーキング要旨: https://gist.run/?id=0b60a1687e213797a8adc0d5ca870c06

編集:あなたが実際にページャを構築している場合は 、テンプレートの一部とカスタム要素を作成することを検討。はるかに簡単な時間があります。

+0

upsあなたがそれを好きだったかどうかを確認してください。次の質問 –

+0

私はこの解決策で本当にバインディングを設定していないので、 pager.numberOfPages'を親VM内に作成します。 –

+0

それは問題ではありませんでした。そのためには、ビューモデルでは、他のビューモデルのプロパティの変更を通知する必要はほとんどありません。ビューモデルのプロパティは状態プロパティであり、このようなカスタム属性を設定することは、APIの背後にある特定の機能のサブセットを抽象化する目的に役立ちます。たとえば、ビューを更新するように通知する場合は、上記で行ったことを実行してテンプレートで使用するだけです。テンプレートエンジンは、それを観察する方法を知っています。 –

関連する問題