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中,控制器旨在代理模型,因此首先在控制器上调用计算属性函数是有意义的。作为参考,您可以查看来自 Ember.js NYC 的 Luke Melia 的这个内容丰富的演讲,尤其是在 31:30 分钟,其中展示了包含该概念的幻灯片。

希望能帮助到你

于 2013-05-08T23:54:28.673 回答