【问题标题】:Ember model not updated when new model is added to it's hasMany relationship将新模型添加到其 hasMany 关系时,Ember 模型未更新
【发布时间】:2014-04-02 11:44:52
【问题描述】:

模型 一个用户有许多公司(一对多的关系)。 Ember 模型:

// User model
App.User = DS.Model.extend({
    companies: DS.hasMany("company", {async: true})
});

App.Company = DS.Model.extend({
    user: DS.belongsTo("user")
});

问题 当我创建一个新的公司模型,定义它的用户属性并保存()它时,用户的公司属性在我刷新页面之前不会更新。示例:

var user = this.get("controllers.application").get("model"); // Get user
company.set('user', user); // Set user to current user  
company.save(); // Call POST HTTP verb to update db model

但是,作为一种变通方法,我可以将新的公司模型明确推送到公司的用户列表中,以便立即看到新公司。执行此操作后,我不调用 save() 。但是这一步有必要吗?

user.get("companies").pushObject(company); // Add company to users list of companies

应用详情
- 使用 Ember RESTAdapter
- 带有 Flask-SQLAlchemy 的后端 Flask 服务器
- 使用 Flask-Restless

【问题讨论】:

  • 只是出于好奇,您可以尝试一下标记为asyncuser 关系吗?我认为这不是你的问题,但我从 Ember-Data 关系中看到了一些奇怪的事情。
  • 不,不是这样。不过谢谢。我将尝试将“我的公司”路线的模型设置为来自商店的公司,其中用户 = 用户,而不是将当前登录的用户设置为模型。
  • 很久没用Ember-Data了,先看看有没有经验的大侠能解答一下。如果没有,我可能会在下班时尝试一下。但无论哪种方式,重现该问题的 JSBin 都会对我们所有人有所帮助。 (它甚至可以帮助您找出问题的根源。)

标签: ember.js ember-data


【解决方案1】:

问题是我分配给这条路线的模型。我之前将登录用户指定为模型,并访问他们的公司列表,例如:

App.MyCompaniesRoute = Ember.Route.extend({
    model: function(){
        return this.store.find("user", 1); // ID is 1 for example
    }
});

我应该将这条路线的模型设置为商店中与当前登录用户具有相同用户的所有公司,例如:

model: function(){
    this.store.filter("company", function(company){
        return company.get("user") == currentUser; // Current user model
    });
}

谢谢!

【讨论】:

    猜你喜欢
    • 2017-05-17
    • 2015-11-17
    • 1970-01-01
    • 2019-10-09
    • 1970-01-01
    • 2014-01-02
    • 1970-01-01
    • 2019-06-06
    • 2013-11-05
    相关资源
    最近更新 更多