1

私は EmberJS を使用しており、計算されたプロパティへの依存関係をセットアップしようとしています。訪問者には複数のチケット (配列) を含めることができ、訪問者の配列を含むオブジェクトにアクセスできます。これは私の計算されたプロパティです。訪問者配列内の訪問者のいずれかにチケットが追加された場合、どのようにプロパティを再計算できますか?

App.AttendanceController = App.SlideBaseController.extend
eligibleVisitors:
    (->
        return @getElegibleVisitors()
    ).property('App.state.session.visitors.@each.type')

allEligibleVisitorsAttending:
    (->
        return _.all @getElegibleVisitors(), (visitor)->
            return visitor.tickets.length > 0 and _.any visitor.tickets, (ticket)->
                return ticket.EventID is content.Event.ID
    ).property('App.state.session.visitors.tickets')

getElegibleVisitors:->
    return _.filter App.state.session.visitors, (visitor)->
        return visitor.type isnt App.VisitorTypes['Infant']
4

2 に答える 2

0

私の知る限り、これは現在不可能であり、Ember 1.0 には適用されません。ここを参照してください: https://github.com/emberjs/ember.js/issues/541

ネストされた@eachプロパティは、オブザーバーを正しくトリガーしません。

同様の問題(ネストされたツリー構造)に直面しました-各子ノードに親ノードへの参照プロパティを持たせ、追加することで回避しました

Node = Ember.Object.extend
  nodeParent: null # to point at parent
  nodeChanged: (->
      @get('nodeParent')?.notifyPropertyChange 'notifier'
  ).observes 'various', 'properties

親の他のプロパティがバインドできる一般的なキーとして「notifier」を使用しました。子の内容が変更されると、 のプロパティが変更され、parent.notifier必要な他のプロパティがトリガーされます。

これはハッキーな回避策です。プラス面は機能することです。マイナス面は、親子関係を追跡する必要があることです。つまり、あなたにとって、それぞれTicketはそのへの参照が必要ですVisitor

于 2013-03-26T23:42:18.977 に答える
0

このようなものが動作するはずです:

.property('App.state.session.visitors.@each.tickets.@each')

訪問者にチケットが追加されると更新されます。

于 2013-03-26T17:55:11.437 に答える