2014-04-29 66 views
3

您知道Sencha Touch是否有可能在路由過濾器之前實現多個路由?Sencha Touch 2多重路由前過濾器

在下面的代碼中,對於家庭路由,我需要添加更多的一個過濾器。

可以這樣做嗎?

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' 
     } 
    }, 
+0

你介意給我這個回答一些建議嗎?賞金即將到期,我想知道我是否可以改進它或糾正它。 –

回答

1

你應該把之前的過濾器放在一個數組中。

試試這個:

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; 
},