您是否知道Sencha Touch是否可以对路由实施多个事前过滤器?
在下面的代码中,对于本地路由,我需要添加一个以上的过滤器。
能做到吗?
Ext.define("TestApp.controller.Router", {
extend: "Ext.app.Controller",
config: {
before: {
home: 'authenticate, filter2, filter3',
products: 'authenticate',
product: 'authenticate',
testingtwo: 'authenticate'
},
routes: {
'': 'home',
'home' : 'home',
'login' : 'login',
'products' : 'products',
'products/:id': 'product',
'testingtwo' : 'testingtwo'
}
},
最佳答案
您应该将before过滤器放入数组中。
尝试这个:
config: {
before: {
home: ['authenticate', 'filter2', 'filter3'],
products: 'authenticate',
product: 'authenticate',
testingtwo: 'authenticate'
}
}
这是Ext.app.Controller源代码中的相关代码:
/**
* @private
* Massages the before filters into an array of function references for each controller action
*/
applyBefore: function(before) {
var filters, name, length, i;
for (name in before) {
filters = Ext.Array.from(before[name]);
length = filters.length;
for (i = 0; i < length; i++) {
filters[i] = this[filters[i]];
}
before[name] = filters;
}
return before;
},
关于sencha-touch-2 - Sencha Touch 2过滤器之前的多条路线,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23364139/