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 如何在余烬查询中正确使用参数?_Ember.js_Ember Cli - Fatal编程技术网

Ember.js 如何在余烬查询中正确使用参数?

Ember.js 如何在余烬查询中正确使用参数?,ember.js,ember-cli,Ember.js,Ember Cli,我一直在尝试为我的应用程序实现分页(我尝试了ember cli分页和ember简单分页),但我遇到了很多问题。所以我决定尝试自定义分页,并注意到我无法将参数传递到查询中。例如,当访问我的api时,start和limit都可以正常工作。在我的路线中调用它时,它似乎完全忽略了这一点,只给我所有条目。我希望大家能了解我做错了什么,或者如何在这种情况下正确实现分页 app/adapters/post.js import DS from 'ember-data'; export default DS.J

我一直在尝试为我的应用程序实现分页(我尝试了ember cli分页和ember简单分页),但我遇到了很多问题。所以我决定尝试自定义分页,并注意到我无法将参数传递到查询中。例如,当访问我的api时,start和limit都可以正常工作。在我的路线中调用它时,它似乎完全忽略了这一点,只给我所有条目。我希望大家能了解我做错了什么,或者如何在这种情况下正确实现分页

app/adapters/post.js

import DS from 'ember-data';

export default DS.JSONAPIAdapter.extend({
  host:'https://jsonplaceholder.typicode.com',
  pathForType(){
    return 'posts';
  }
});
import Controller from '@ember/controller';

export default class ArticlesController extends Controller {
  queryParams = ['start', 'limit'];
  start = 1;
  limit = 5;
}
app/models/post.js

import DS from 'ember-data';
const { Model } = DS;

export default Model.extend({
  user:DS.belongsTo('user'),
  title:DS.attr('string'),
  body:DS.attr('string'),
});
app/routes/post.js

import Route from '@ember/routing/route';
import { set } from '@ember/object';
import { hash } from 'rsvp';

export default Route.extend({
  model() {
    return hash({
      post: this.store.query('post', {
                start: 0,
                limit: 10
            }),
      user: this.store.findAll('user')
    });
  },

  setupController(controller, model) {
    this._super(...arguments);
    set(controller, 'posts', model.post);
    set(controller, 'users', model.user);
  }

});
import Route from '@ember/routing/route';
import { set } from '@ember/object';
import { hash } from 'rsvp';

export default Route.extend({
  queryParams = {
    start: {
     refreshModel: true
    },
    limit: {
      refreshModel: true
    }
  },
  model() {
    return hash({
      post: this.store.query('post', {
                start: 0,
                limit: 10
            }),
      user: this.store.findAll('user')
    });
  },

  setupController(controller, model) {
    this._super(...arguments);
    set(controller, 'posts', model.post);
    set(controller, 'users', model.user);
  }
});

您需要在侧线和控制器中定义查询参数

app/routes/post.js

import Route from '@ember/routing/route';
import { set } from '@ember/object';
import { hash } from 'rsvp';

export default Route.extend({
  model() {
    return hash({
      post: this.store.query('post', {
                start: 0,
                limit: 10
            }),
      user: this.store.findAll('user')
    });
  },

  setupController(controller, model) {
    this._super(...arguments);
    set(controller, 'posts', model.post);
    set(controller, 'users', model.user);
  }

});
import Route from '@ember/routing/route';
import { set } from '@ember/object';
import { hash } from 'rsvp';

export default Route.extend({
  queryParams = {
    start: {
     refreshModel: true
    },
    limit: {
      refreshModel: true
    }
  },
  model() {
    return hash({
      post: this.store.query('post', {
                start: 0,
                limit: 10
            }),
      user: this.store.findAll('user')
    });
  },

  setupController(controller, model) {
    this._super(...arguments);
    set(controller, 'posts', model.post);
    set(controller, 'users', model.user);
  }
});
以及app/controllers/post.js内部

import DS from 'ember-data';

export default DS.JSONAPIAdapter.extend({
  host:'https://jsonplaceholder.typicode.com',
  pathForType(){
    return 'posts';
  }
});
import Controller from '@ember/controller';

export default class ArticlesController extends Controller {
  queryParams = ['start', 'limit'];
  start = 1;
  limit = 5;
}

默认情况下,当查询参数更改时,Ember不调用模型。我们通过refreshModel:true

告诉它在任何时间开始/限制更改时都这样做,这就是我想要的解释。仅供参考,对于那些准备就绪的人,它没有立即工作,并且在本例中发现查询参数不仅仅是“limit”,而是“_limit”。哦,是的,对不起。。。你的参数有一个前缀。。。我没有看到他们,你明白的好:)