我有一个四个垂直面板UI:
对于此UI,我使用嵌套路由和插座:
App.Router.map(function() {
this.resource('customers', { 'path' : '/customers' }, function() {
this.resource('customers_filters', { 'path' : '/:filter' }, function() {
this.resource('customer', { 'path' : '/show/:customer_id' });
});
});
});
一切正常但当我显示特定项目的详细信息(我的嵌套路由中的最后一条路线)时,URL中的哈希值不正确。
我在JsBin上做了一个例子:http://jsbin.com/iNAGaVo/1
我做错了什么? 谢谢
答案 0 :(得分:1)
问题是,ember会根据每条路线的模型建立网址。当它试图在active / all路径下面建立路由时,它会使用你的项目数组(它上面没有一个名为filter的字段),所以它不知道如何确定它当前是否有all / filter模型。一个好的做法是让你的slug(路径中的:value)与模型上的属性匹配。
如果它不匹配,你可以覆盖路线中的序列化方法,因此ember知道如何为你的网址序列化你的模型。
App.CustomersFiltersRoute = Ember.Route.extend({
model: function(params) {
if(params.filter == "active") {
return _.where(App.Customers, {isActive: true});
}
return App.Customers;
},
serialize: function(model){
if(model === App.Customers){
return {filter:'all'};
}
return {filter:'active'};
}
});