Ember.js,如何在商店中获得模型的价值

时间:2014-03-25 16:00:36

标签: javascript android eclipse ember.js

我正在尝试使用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'),
 });

感谢您的帮助。

1 个答案:

答案 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 ;
  }
});