3

これが私のコントローラーEventTimezoneControllerです。そのcontentプロパティはEventモデルに設定されます。

App.ChallengeTimezoneController = Ember.ObjectController.extend
    timezones: [{value: "", label: ""}, {...}]

    timezoneDidChange: (->
        console.log "In controller", @get("timezone")
    ).observes("timezone") # I also tried "content.timezone"

そして今、私のEventモデル:

App.Event = App.Challenge = DS.Model.extend(Ember.Validations,
    timezone: DS.attr('string')

    timezoneDidChange: (->
        console.log "In model", @get("timezone")
    ).observes("timezone")
)

そして、私はTimezoneSelectビューを持っています

App.TimezoneSelect = Ember.Select.extend
  valueBinding: "controller.timezone"
  contentBinding: "controller.timezones"
  optionValuePath: "content.value",
  optionLabelPath: "content.label"

問題は次のとおりです。選択ドロップダウンで新しい値を選択すると、ログに次のように表示されます。

> In controller American Samoa
> In model American Samoa

timezoneDidChange私が理解していることから、モデルのプロパティを監視しているため、コントローラーのメソッドがモデル内のメソッドの前に呼び出されるのはなぜですか?

4

1 に答える 1

1

ではember.js、コントローラはモデルをプロキシすることを意図しているため、最初にコントローラで計算されたプロパティ関数を呼び出すことが理にかなっています。参考までに、特に31:30のEmber.js NYC での Luke Melia による非常に有益なトークをチェックしてください。ここでは、スライドがコンセプトと共に示されています。

それが役に立てば幸い

于 2013-05-08T23:54:28.673 に答える