这是用于在升级到1.0之前工作的代码
Radium.AuthManager = Ember.Object.extend
_token: null
init: ->
@_super.apply this, arguments
@set('token', $.cookie('token'))
token: ((key, value) ->
if arguments.length == 2
@set '_token', value
return
@get('_token')
).property('_token').volatile()
setAjaxHeaders: ( ->
if token = @get('_token')
$.ajaxSetup
headers:
"X-User-Token": token
).observes('_token')
tokenDidChange: ( ->
token = @get('_token')
return unless Ember.isEmpty(token)
location.replace('http://blah')
).observes('token')
升级到1.0后,它不再有效。
观察员真的会被打破或者是否已经改变了?
答案 0 :(得分:2)
以前的行为是set()
中的init()
电话会触发观察者;目前的行为是它不会。
在:
App.Person = Ember.Object.extend({
init: function() {
this.set('salutation', "Mr/Ms");
},
salutationDidChange: function() {
// fired
}.observes('salutation')
});
现在:
App.Person = Ember.Object.extend({
init: function() {
this.set('salutation', "Mr/Ms");
},
salutationDidChange: function() {
// fired
}.observes('salutation').on('init')
});
直接从release notes。
获取的示例只需将这些on('init')
标记添加到您的观察者:
Radium.AuthManager = Ember.Object.extend
# ...
setAjaxHeaders: ( ->
# ...
).observes('_token').on('init')
tokenDidChange: ( ->
# ...
).observes('token').on('init')