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

Ember.js Models:Finding Reords