Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ember.js Embjers store.createRecord或store.push不更新视图_Ember.js_View_Ember Data_Push - Fatal编程技术网

Ember.js Embjers store.createRecord或store.push不更新视图

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

我正试图创造一张新唱片,并把它推向商店。我可以很好地持久化它(一旦我弄明白了这一点,我将在成功持久化后推送到存储区),但是视图/模板没有被刷新。我知道持久性是有效的,因为如果我刷新整个页面,就会出现新记录

我还尝试了这个.store.push(),但什么也没发生。我环顾四周,每个人似乎都在使用filter(),但只在父控制器中的一个子记录集上使用

提前谢谢,我觉得这是很基本的东西

路线/项目

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);您的视图将自动刷新