Ember.js 具有余烬数据1.0.0-beta的临时非持久性记录

Ember.js 具有余烬数据1.0.0-beta的临时非持久性记录,ember.js,ember-data,Ember.js,Ember Data,我不熟悉余烬和余烬数据,正在决定是使用余烬数据还是其他持久性库。为了进行评估,我正在尝试编写一个支持Rails的小应用程序 我的一条路线可以被认为与示例中经常使用的Todo MVC应用程序类似 在我的模板中,我有许多表示模型中属性的输入字段。此外,模型中还有一个元素表示hasMany关系 型号: App.CompanyModel = DS.Model.extend company: DS.attr() desc: DS.attr() contacts: DS.hasMany(

我不熟悉余烬和余烬数据,正在决定是使用余烬数据还是其他持久性库。为了进行评估,我正在尝试编写一个支持Rails的小应用程序

我的一条路线可以被认为与示例中经常使用的Todo MVC应用程序类似

在我的模板中,我有许多表示模型中属性的输入字段。此外,模型中还有一个元素表示hasMany关系

型号:

App.CompanyModel = DS.Model.extend
   company: DS.attr()
   desc: DS.attr()
   contacts:  DS.hasMany('company_contact')

App.CompanyContactModel = DS.Model.extend
   firstname: DS.attr()
   lastname: DS.attr()
   ...
在我的控制器中,我希望能够创建一个新的CompanyModel记录(并向其中添加一个或多个联系人模型),但在我准备好之前,不要让它出现在控制器的CompanyModel实例中

当前,当用户想要添加新记录时,我有一个组件,它在我的控制器中调用一个操作,如下所示:

@set('new_company',
  @store.createRecord('company')
)
除了一件事之外,这实际上很有效。我的视图必须填充“new_company”中的各个属性,但是,记录会立即添加到控制器的模型实例中,并显示在记录列表中;我只希望在特定操作发生后,新创建的记录在表中可见

我可以这样做,而不是用createRecord实例化新的_公司:

@set('new_company',
  Ember.Object.create
    companyname: ''
    desc: ''
    contacts: [
      firstname: ''
      lastname: ''
    ]
)
App.FooRoute = Em.Route.extend({
  model: function(){
    return this.store.find('company');
  }
});
然后做一个@store.createRecord('company',@get('new_company')),但是,考虑到我已经在模型中定义了我的属性,我觉得它不是很枯燥

我使用的是Ember 1.5.0和Ember Data 1.0.0-beta.7

似乎我不是第一个出现这个问题()的人,但似乎余烬数据已经发生了足够的变化,使得所有这些解决方案都无法运行


谢谢你的帮助

你真正的问题是你正在使用被认为是现场收藏的东西。我假设在你的路线上你做过这样的事情:

@set('new_company',
  Ember.Object.create
    companyname: ''
    desc: ''
    contacts: [
      firstname: ''
      lastname: ''
    ]
)
App.FooRoute = Em.Route.extend({
  model: function(){
    return this.store.find('company');
  }
});
find
没有任何参数,比如说,嘿,余烬数据,给我找到公司所有的记录。恩,余烬数据向后端发出请求,然后返回
store.all('company')
all
是一个实时收藏,它将始终包含商店中当前该类型的所有记录。在你的情况下,你是说我想避免任何新的记录。有两种方法可以解决这个问题

创建一个静态列表。(您需要在此列表中手动添加/删除对象)。 例如:

创建仅显示非新记录的计算属性 然后在模板中迭代计算属性

{{#each item in savedRecords}}

{{/each}}

示例:

非常感谢您的回复。知道我有几个选择来处理这件事非常有帮助。在这种情况下,filterBy最有效。我对at符号的使用感到困惑。我已经看过了
@each
,但还没有看过
@set
@store
。@符号是咖啡脚本中“this.”的缩写。