ember 元信息似乎由控制器共享

ember meta information seems to be shared by controllers

元信息。 index 和 limit 在 link-tos 中用于分页。

元信息似乎在控制器之间共享。路由器就是这样

this.resource('persons', { path: 'persons/index/:index/limit/:limit' }, function() {
 this.resource('person', { path: 'person/:person_id' }, function() {  
    this.resource('personaddresess', { path: 'personaddresess/:person_id/index/:index/limit/:limit' });
  });

顶级导航有 link-tos,索引为 0,限制为 50

 {{#link-to 'persons' 0 50 }}

url 在 #/persons/index/0/limit/50

处是正确的

地址的二级导航使用索引0和限制9

  {{#link-to 'personaddresses' id 0 9}}

在上述 'clicking' 之后 link- 将人员和人员地址的限制设置为 9。

即。 url 现在是 #/persons/index/0/limit/9/person/1/personaddresses/1/index/0/limit/9

两条路线都使用以下方法从 REST 获取模型

   model: function(params) {
      var index = numeral().unformat(params.index);
      var limit = numeral().unformat(params.limit);
      return this.store.find(yaddayadda);

现在元数据似乎在控制器之间共享。每个控制器不应该有自己的元数据(因为每个控制器都有自己的模型)吗?

App.PersonsController =  Ember.ObjectController.extend({
  meta: function() {
     return this.get('model.meta');
  }.property('model.meta'),
});

App.PersonAddressController =  Ember.ObjectController.extend({
  meta: function() {
     return this.get('model.meta');
  }.property('model.meta'),
});

在每次找到后,meta 确实通过 extractMeta 函数传递,该函数为商店中的每种类型设置了 meta。

store.setMetadataFor(type, { limit: payload.limit });  // sets the metadata for "post"

但是,两者的模型类型都不一样(一个是Person,一个是PersonAddress);此外,未使用存储参数。在 link-to 中传递的硬编码参数(0,50 和 0,9)被使用了?!

不确定它是否相关,但在 'persons' 模板的部分中使用了以下内容。 {{#link-to 'persons' meta.next meta.limit }} 但是,无论是否单击后者 link-to,都会发生上述行为。

有一个中间步骤可以通过 id 加载个人。 (如上图url as person/1

这与 meta 关系不大,model.meta,提取 meta 或存储 meta。

参数必须唯一命名,无论是其 ID、索引还是限制。

this.resource('persons', { path: 'persons/index/:personsindex/limit/:personslimit' }

this.resource('personaddresess', { path: 'personaddresess/:person_id/index/:paindex/limit/:palimit' });
  });

然后在路由中...匹配那些参数。

 model: function(params) {
      var index = numeral().unformat(params.paindex); //using int but wtcmb
      var limit = numeral().unformat(params.palimit);
      return this.store.find(yaddayadda);

请注意,在 url 中重复使用字段名称似乎没问题,在本例中为 /index//limit/