Ember.js Embjers store.createRecord或store.push不更新视图
我正试图创造一张新唱片,并把它推向商店。我可以很好地持久化它(一旦我弄明白了这一点,我将在成功持久化后推送到存储区),但是视图/模板没有被刷新。我知道持久性是有效的,因为如果我刷新整个页面,就会出现新记录 我还尝试了这个.store.push(),但什么也没发生。我环顾四周,每个人似乎都在使用filter(),但只在父控制器中的一个子记录集上使用 提前谢谢,我觉得这是很基本的东西 路线/项目Ember.js Embjers store.createRecord或store.push不更新视图,ember.js,view,ember-data,push,Ember.js,View,Ember Data,Push,我正试图创造一张新唱片,并把它推向商店。我可以很好地持久化它(一旦我弄明白了这一点,我将在成功持久化后推送到存储区),但是视图/模板没有被刷新。我知道持久性是有效的,因为如果我刷新整个页面,就会出现新记录 我还尝试了这个.store.push(),但什么也没发生。我环顾四周,每个人似乎都在使用filter(),但只在父控制器中的一个子记录集上使用 提前谢谢,我觉得这是很基本的东西 路线/项目 export default Ember.Route.extend({ model: funct
export default Ember.Route.extend({
model: function(){
return this.store.find('projects');
}
});
export default Ember.ArrayController.extend({
actions: {
createProject: function() {
var title = this.get('newProjectTitle');
var description = this.get('newProjectDescription');
if (!title.trim()) { return; }
// Create the new Project model
var project = this.store.createRecord('project', {
title: title,
description: description
});
project.save();
this.set('newProjectTitle', '');
this.set('newProjectDescription', '');
}
}
});
<div class="form-group">
{{input type="text" class="form-control" placeholder="title" value=newProjectTitle}}
{{input type="text" class="form-control" placeholder="description" value=newProjectDescription action="createProject"}}
</div>
<button class="btn btn-xs btn-success" {{action 'createProject'}}>Create this Project</button>
<ul class="list-group">
{{#each project in model}}
{{#link-to 'project' project}}
<li class="list-group-item">
{{project.id}} - {{project.title}}
</li>
{{/link-to}}
{{/each}}
</ul>
控制器/项目
export default Ember.Route.extend({
model: function(){
return this.store.find('projects');
}
});
export default Ember.ArrayController.extend({
actions: {
createProject: function() {
var title = this.get('newProjectTitle');
var description = this.get('newProjectDescription');
if (!title.trim()) { return; }
// Create the new Project model
var project = this.store.createRecord('project', {
title: title,
description: description
});
project.save();
this.set('newProjectTitle', '');
this.set('newProjectDescription', '');
}
}
});
<div class="form-group">
{{input type="text" class="form-control" placeholder="title" value=newProjectTitle}}
{{input type="text" class="form-control" placeholder="description" value=newProjectDescription action="createProject"}}
</div>
<button class="btn btn-xs btn-success" {{action 'createProject'}}>Create this Project</button>
<ul class="list-group">
{{#each project in model}}
{{#link-to 'project' project}}
<li class="list-group-item">
{{project.id}} - {{project.title}}
</li>
{{/link-to}}
{{/each}}
</ul>
项目。哈佛商学院
export default Ember.Route.extend({
model: function(){
return this.store.find('projects');
}
});
export default Ember.ArrayController.extend({
actions: {
createProject: function() {
var title = this.get('newProjectTitle');
var description = this.get('newProjectDescription');
if (!title.trim()) { return; }
// Create the new Project model
var project = this.store.createRecord('project', {
title: title,
description: description
});
project.save();
this.set('newProjectTitle', '');
this.set('newProjectDescription', '');
}
}
});
<div class="form-group">
{{input type="text" class="form-control" placeholder="title" value=newProjectTitle}}
{{input type="text" class="form-control" placeholder="description" value=newProjectDescription action="createProject"}}
</div>
<button class="btn btn-xs btn-success" {{action 'createProject'}}>Create this Project</button>
<ul class="list-group">
{{#each project in model}}
{{#link-to 'project' project}}
<li class="list-group-item">
{{project.id}} - {{project.title}}
</li>
{{/link-to}}
{{/each}}
</ul>
{{input type=“text”class=“form control”placeholder=“title”value=newProjectTitle}
{{input type=“text”class=“form control”placeholder=“description”value=newProjectDescription action=“createProject”}
创建此项目
{{{#模型中的每个项目}
{{{#链接到'project'project}
-
{{project.id}-{{project.title}
{{/链接到}
{{/每个}}
您缺少设置控制器方法-
setupController: function(controller, model) {
controller.set('model', model);
}
在route/projects.js文件中使用上述方法。
您的代码将类似于-
export default Ember.Route.extend({
model: function(){
return this.store.find('projects');
}
setupController: function(controller, model) {
controller.set('model', model);
}
});
有关更多信息,您也可以参考此链接-
最终与。。哪个有效。。但这是最好的方法吗
var model = this.get('model');
model.pushObject(project);
我还发现
var posts = this.store.find('post'); //network request.
var posts = this.store.all('post'); //no network request, but does live reload
因为我坚持命名约定,所以我不需要添加这一点。这是控制器的默认行为。”App.PostRoute=Ember.Route.extend({//下面的代码是默认行为,因此,如果这是您//所需的全部,那么您根本不需要提供setupController实现。//setupController:function(controller,model){controller.set('model',model);}});'你能检查一下吗。在模板文件中,尝试记录模型的值,如-{{log model}},查看它是否包含新值或旧值。是的,关于setupController钩子,您是正确的,但在您的情况下,您没有更改路由,因此模型钩子不会被自己调用。您需要编写一些方法来设置控制器的模型。如果您确实喜欢此控制器。set('content',model);您的视图将自动刷新