Ember.js 升级到1.0后,观察者将不会开火
此代码用于在升级到1.0之前工作Ember.js 升级到1.0后,观察者将不会开火,ember.js,Ember.js,此代码用于在升级到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
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后,它不再工作
观察者真的会被破坏吗?或者它已经改变了吗?以前的行为是,
set()
调用init()
将触发观察者;目前的行为是它不会
之前:
App.Person = Ember.Object.extend({
init: function() {
this.set('salutation', "Mr/Ms");
},
salutationDidChange: function() {
// fired
}.observes('salutation')
});
现在:
示例直接取自
只需将('init')标记上的添加到您的观察者:
Radium.AuthManager = Ember.Object.extend
# ...
setAjaxHeaders: ( ->
# ...
).observes('_token').on('init')
tokenDidChange: ( ->
# ...
).observes('token').on('init')
Radium.AuthManager = Ember.Object.extend
# ...
setAjaxHeaders: ( ->
# ...
).observes('_token').on('init')
tokenDidChange: ( ->
# ...
).observes('token').on('init')