Ember.js 余烬元信息似乎由控制器共享

Ember.js 余烬元信息似乎由控制器共享,ember.js,ember-data,Ember.js,Ember Data,元信息。索引和限制在链接tos中用于分页 元信息似乎在控制器之间共享。路由器就是这样 this.resource('persons', { path: 'persons/index/:index/limit/:limit' }, function() { this.resource('person', { path: 'person/:person_id' }, function() { this.resource('personaddresess', { path: 'perso

元信息。索引和限制在链接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' });
  });
顶级导航具有索引为0且限制为50的链接到

 {{#link-to 'persons' 0 50 }}
url在/persons/index/0/limit/50处是正确的

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

  {{#link-to 'personaddresses' id 0 9}}
在“单击”上述链接后,个人和角色地址的限制都设置为9

也就是说,url现在是/persons/index/0/limit/9/person/1/personaddress/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;此外,不使用存储参数。使用链接中传递的硬编码参数0,50和0,9

不确定其是否相关,但在“人员”模板的部分中使用了以下内容。{{链接到'persons'meta.next meta.limit}}但是,无论是否单击后一个链接,上述行为都会发生


有一个中间步骤,通过id加载个人。如上面的url所示,这与meta、model.meta、extract meta或store 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/