加载JSON数据后,模型/视图不会刷新

时间:2017-01-31 23:55:36

标签: ember.js

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

  1. 应用/ adapter.js

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

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

        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,
           };
          }
         });
    
    1. 我的路由器/ 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;
       });
      

      },

      actions:{
       submitsearch: function(searchText) {
                   this.store.query('result',{ searchText } );
                  this.refresh();
          }
       }
           });
      
    2. 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')
         });
      
    3. 模板/ index.js:

        {{search-home  action="submitsearch"}}
      
         {{search-list searchlist=model}}
      
    4. 模板/组件/搜索list.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}}
      

    5. 问题:当我提交动作并尝试更新结果结果时 - 存储正在获取数据(我可以在ember数据中看到) - 但是UI没有得到新结果的刷新。但我移动&#34;返回this.store.query(&#39;结果&#39;,{searchText});&#34;代码模型()阻止它工作正常。我怎样才能让它在行动中发挥作用。

      请帮助解决这个问题。 注意:我使用的是2.11.0版本

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

您还需要更改模型文件名。

还适配器等。

请检查此twiddle。为简单起见,我省略了组件并将列表放在索引模板中。