2015-01-26 56 views
0

元信息。 index-limit在link-tos中用于分页。ember元信息似乎被控制器共享

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

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' }); 
    }); 

顶层导航具有链路-TOS索引为0和极限50

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

URL是否正确在#/persons/index/0/limit/50

的第二级别导航为地址使用索引0和极限9

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

'点击'后以上链接 - 对于BOTH人员和personaddresses的限制设置为9.

ie。网址是现在#/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函数来传递存储上每种类型的元。

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

但是,模型类型都不相同(一个是Person,另一个是PersonAddress);此外,所使用的商店参数是而不是。链接到的硬编码参数(0,50和0,9)用于?!

不确定它是否相关,但在“人员”模板的部分中使用了以下内容。然而,上述行为发生在后一个链接是否被点击。

有一个中间步骤,通过id加载一个人。 (如上面的网址视为person/1

回答

0

这有一点做与元,model.meta,提取元或存储元。

的参数必须唯一命名是否其ID,索引或限制。

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

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

然后在路线...匹配那些PARAMS。

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/ and /limit/