Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.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 加载JSON数据后未刷新模型/视图_Ember.js - Fatal编程技术网

Ember.js 加载JSON数据后未刷新模型/视图

Ember.js 加载JSON数据后未刷新模型/视图,ember.js,Ember.js,我正在尝试使用Ember.JS构建一个小型搜索应用程序- 以下是我的代码片段: application/adapter.js import DS from 'ember-data'; export default DS.RESTAdapter.extend({ host: 'http://c6403:2222', namespace: 'server' }); searializers/results.js import DS from 'ember-data'; expo

我正在尝试使用Ember.JS构建一个小型搜索应用程序- 以下是我的代码片段:

  • application/adapter.js

      import DS from 'ember-data';
      export default DS.RESTAdapter.extend({
      host: 'http://c6403:2222',
      namespace: 'server'
     });
    
  • searializers/results.js

    import DS from 'ember-data';
    export default DS.JSONSerializer.extend({
    });
    
  • 尝试

        import DS from 'ember-data';
    
        export default DS.RESTSerializer.extend({
        normalizePayload: function(payload) {
          return {
            title: payload.title,
            description: payload.description,
            type: payload.type,
            url: payload.url,
           };
          }
         });
    
  • 我的路由器/index.js

    export default Ember.Route.extend({
    model: function (){
     var searchText = 'searchText';
    
     return this.store.query('result',{ searchText } ).then(function(results) {
       alert(results);
       return results;
     });
    
    },

  • model/results.js

      import DS from 'ember-data';
       export default  DS.Model.extend({
        title: DS.attr('string'),
         description: DS.attr('string'),
         url: DS.attr('string'),
         type: DS.attr('string'),
         searchText: DS.attr('string')
       });
    
  • 模板/index.js:

      {{search-home  action="submitsearch"}}
    
       {{search-list searchlist=model}}
    
  • 模板/组件/搜索列表.hbs

          <ul>
        hello - this is search list page  {{ searchlist }}
    
           {{#each searchlist as | searchItem|}}
     <li>{{searchItem.title}}</li>
     <li>{{searchItem.description}}</li>
     <li>{{searchItem.url}}</li>
     {{/each}}
    
      您好-这是搜索列表页面{{searchlist} {{{#每个搜索列表作为|搜索项}
    • {{searchItem.title}
    • {{searchItem.description}
    • {{searchItem.url}
    • {{/每个}}

  • 问题:当我提交操作并尝试更新结果时-存储区正在获取数据(我可以在ember数据中看到)-但UI没有使用新结果刷新。但我将“returnthis.store.query('result',{searchText});”代码移动到model()块中,使其工作正常。我怎样才能让它从行动中起作用

    请帮忙。
    注意:我使用的是2.11.0版本

    ,RESTSerializer希望对象数组在与模型名称复数匹配的有效负载密钥内传递。或者,如果您不想发送有效负载密钥,可以使用JsonSerializer。

    您还需要更改模型文件名

    还有适配器等等


    请看这个。为简单起见,我省略了该组件,并将列表放在索引模板中。

    感谢您的响应。是的,我试过jsonserializer。从“余烬数据”导入DS;导出默认的DS.JSONSerializer.extend({primaryKey:function(type){return'url';}});但我看到的错误是“typeError:无法读取未定义的属性'type'”,谢谢您的帮助。我稍微修改了我的问题。你能看一下吗?谢谢你的回复。当我将逻辑放在model:function(){}中时,它工作得很好。但我想把它付诸行动——在这里它不起作用。你能看一下吗?操作:{submitsearch:function(searchText){…}@amarnathreddyappu我更新了我的twiddle,请再看一看。这是很棒的东西。非常感谢你的帮助。我想为你的帮助投票1000次。我试图投票,但它一直在说“感谢您的反馈!声誉低于15的人所投的票会被记录下来,但不会改变公开显示的帖子分数。”所以不确定。
          <ul>
        hello - this is search list page  {{ searchlist }}
    
           {{#each searchlist as | searchItem|}}
     <li>{{searchItem.title}}</li>
     <li>{{searchItem.description}}</li>
     <li>{{searchItem.url}}</li>
     {{/each}}