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