我正在尝试使用 Ember 模型做一些基本的事情,但我遇到了一些带有承诺的奇怪行为。不确定我是否非常了解它应该如何工作。
所以,我有这条路线:
App.ProfilesIndexRoute = Ember.Route.extend {
redirect: ->
App.Profile.fetch().then (profiles) ->
console.log profiles.get('length')
@transitionTo 'profile', profiles.get('firstObject')
}
我只是希望人们在访问时被重定向到/profiles/123
(= 第一个配置文件)/profiles
。
这是配置文件适配器:
App.Profile.adapter = Ember.Adapter.create {
findAll: (klass, records) ->
$.ajax('/api/users/' + $.cookie('user_id'), {
type: 'get'
headers: {
'Content-Type': 'application/json'
'Authentication-Token': $.cookie('token')
}
dataType: 'json'
}).then (res) ->
profiles = []
// some stuff done here
records.load klass, profiles
}
当我转到 时/profiles
,这是我在控制台中看到的内容:
0
Transitioned into 'profiles.index'
XHR finished loading: "http://localhost/api/users/456".
0
是 的结果console.log profiles.get('length')
。似乎它是在 AJAX 调用有机会完成之前调用的。我的控制台中应该有这样的东西:
Transitioned into 'profiles.index'
XHR finished loading: "http://localhost/api/users/456".
5
我在这里做错了什么?这里有人建议我使用fetch
,find
但它似乎并没有解决我的问题,因为事情没有按正确的顺序执行。
谢谢!