Embjers store.createRecord 或 store.push 未更新视图
Embjers store.createRecord or store.push not updating view
我正在尝试创建新记录并将其推送到商店中。我可以很好地坚持它(并且我会在成功坚持后推送到商店,一旦我弄清楚了),但是 view/template 没有被刷新。我知道持久性是有效的,因为如果我刷新整个页面,就会出现新记录。
我也尝试了 this.store.push(),但没有任何反应。我环顾四周,似乎每个人都在使用 filter() 但仅在父控制器中的一组子记录上...
提前致谢,我觉得它是非常基本的东西。
route/projects
export default Ember.Route.extend({
model: function(){
return this.store.find('projects');
}
});
controllers/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', '');
}
}
});
projects.hbs
<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>
您缺少设置控制器方法 -
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);
}
});
您也可以参考此 link 了解更多信息 -
http://guides.emberjs.com/v1.10.0/routing/setting-up-a-controller/
最后选择了..这很有效..但这是最好的方法吗?
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
我正在尝试创建新记录并将其推送到商店中。我可以很好地坚持它(并且我会在成功坚持后推送到商店,一旦我弄清楚了),但是 view/template 没有被刷新。我知道持久性是有效的,因为如果我刷新整个页面,就会出现新记录。
我也尝试了 this.store.push(),但没有任何反应。我环顾四周,似乎每个人都在使用 filter() 但仅在父控制器中的一组子记录上...
提前致谢,我觉得它是非常基本的东西。
route/projects
export default Ember.Route.extend({
model: function(){
return this.store.find('projects');
}
});
controllers/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', '');
}
}
});
projects.hbs
<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>
您缺少设置控制器方法 -
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);
}
});
您也可以参考此 link 了解更多信息 -
http://guides.emberjs.com/v1.10.0/routing/setting-up-a-controller/
最后选择了..这很有效..但这是最好的方法吗?
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