繁体   English   中英

将Ember从Ember.Object虚拟数据迁移到$ .get数据时出现问题

[英]Problems migrating Ember from Ember.Object dummy data to data from $.get

我只希望一个$ .get调用来满足特定模型。 我似乎找不到任何能清楚说明如何执行此操作的文档?

即我有一个应用程序控制器为:

App.ApplicationController = Ember.ObjectController.extend({
  username: '',
  firstname: '',
  lastname: ''
});

如何使用$ .get中的数据设置用户名? 我知道有Ember Data和其他库可以执行此操作,但是我想在没有这些库的情况下执行此操作,并且更好地了解Ember如何处理异步数据。.不幸的是,他们的指南没有太大帮助:/

谢谢你的帮助 :)

UPDATE

到目前为止,谢谢大家的回答,但是我认为我对问题的解释不够充分。

我有application.hbs

<div class="medium-8 columns">
 <dl class="account-menu right">
   <dd><p><a href="">Welcome, {{username}}</a></p></dd>
   <dd><p><a href="">Customer Support</a></p></dd>
   <dd><a href="#">Log Out</a></dd>
  </dl><!-- .acccount-menu -->
</div>

我有模特:

App.User = Ember.Object.extend({
  id      : '', 
  firstName : '',
  lastName  : '',
  username  : '',

  init: function(){
    console.log(App.Account.get('username');
  },

  fullName: function(){
    return this.get('firstName') + ' ' + this.get('lastName');
  }.property('firstName', 'lastName'), 

}).reopenClass({
  loadAccount: function(){
    return $.get( "http://localhost:8080", { id: 1, request: "account" }).then(function(response){ 
      App.Account = App.User.create({'username': response.username});
    });
  }
});

控制器与上述相同。 我已成功从App.User.create创建新的App.Account并成功触发了App.User抽象类? init方法。问题是{{username}}从未更新? 我知道我在这里缺少一些简单的东西! 再次感谢你的帮助

您可以将ApplicationRoute的模型设置为您获取的JSON:

App.ApplicationRoute = Ember.Route.extend({
   model: function() {
     return $.getJSON('your_url_goes_here');
   }
})

这样,每次输入路线时,模型(以及因此隐含的控制器content )将被设置为AJAX调用返回的JSON。

使用相关路线的model挂钩设置model 在您的情况下:

App.ApplicationRoute = Ember.Route.extend({
    model: function(){
        return $.get.......
    }
});

模型挂钩将接受异步调用,但是在模型挂钩承诺完成之前,ember不会继续渲染视图。

伙计们非常感谢您的帮助。事实证明这是一个简单的疏忽。

没有返回我在loadAccount方法中创建的对象模型承诺'App.User',该方法由ApplicationRouter模型挂钩调用。

错误代码

loadAccount: function(){
  return $.get( "http://localhost:8080", { id: 1, request: "account"    }).then(function(response){ 
    App.Account = App.User.create({'username': response.username});
});

好代码

loadAccount: function(){
  return $.get( "http://localhost:8080", { id: 1, request: "account"    }).then(function(response){ 
    return App.User.create({'username': response.username});
});

这说得通。 $ .get方法向我的模型返回一个从未兑现的承诺,并在.then()方法内返回一个值

谢谢大家对这个问题的回答和关注

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM