我正在尝试使用phonegap和ember.js构建一个Android应用程序。 我有用户,我想知道用户名。
App.IndexRoute = Ember.Route.extend({
model : function(){
var store = this.get('store');
var tmp = this.get('store').find('user',{'username': 'test'}).then(function(items) {
return items.map(function(item) {
return [item.get('username')];
})
});
for(var key in tmp){
console.log("TMP key:" + key + " value: " + tmp[key]);
}
return tmp;
}
});
此模型功能正常。我在索引模板中获取所有用户名。但是如何在我的模型函数中获取用户名? 日志看起来像这样:
TMP key:finally value: function (callback, Label){
var constructor = this.construcor;
return this.then(function(value) {
return constructor.cast(callback)()).then(function(){
return value;
});
}, function(reason) {
return constructor.cast(callback()).then(function(){
throw reason;
});
}, label);
}
tmp的第一个值是函数(...),第二个值看起来类似。那么如何从商店获取用户名?我想要像tmp = [" test"," test"等等]
我的模特只是:
App.User = DS.Model.extend({
username : DS.attr('string'),
});
感谢您的帮助。
答案 0 :(得分:0)
find返回一个承诺,你无法评估承诺的结果,直到它被解决。
在您离开模型挂钩(它是异步的)之前,这不会发生。
App.IndexRoute = Ember.Route.extend({
model : function(){
var store = this.get('store'),
promise = store.find('user',{'username': 'test'}),
promiseResults = promise.then(function(items) {
return items.map(function(item) {
return [item.get('username')];
})
});
promiseResults.then(function(results){
// this codes executes asynchronously after the model hook
for(var key in results){
console.log("TMP key:" + key + " value: " + results[key]);
}
});
return promiseResults ;
}
});