2017-03-20 64 views
0

查詢參數在早期版本的木偶我們可以用木偶控制器如何獲得木偶控制器

return Marionette.AppRouter.extend({ 
    appRoutes: { 
     'admin/:controller/:action(?:query)': "controllerThird", 
     '*notFound': "error" 
    }, 
    controller: new Controller() 
}) 

return Marionette.Controller.extend ({ 
    controllerThird: function (controller, action, query) { 
     this.start(action); 
    } 
}) 

但現在Marionette.Controller

警告:不建議使用。 Controller對象已棄用。而不是使用控制器類的AppRouter ,你應該在普通的JavaScript對象或木偶對象

上指定 回調我們使用MVC控制器像

function (Backbone, Marionette, controller){ 

    "use strict"; 

    var AppRouter = Backbone.Marionette.AppRouter.extend({ 

     appRoutes: { 

      "path1" : "goto_path1", 
      "path2" : "goto_path2", 
      "path3" : "goto_path3" 
     } 

    }); 

    return new AppRouter({controller: controller}); 

}); 

    define([ 
    'jquery', 
    'underscore', 
    'backbone', 
    'marionette', 
    'app', 
    'userSession' 
], 
function($, _, Backbone, Marionette, App, userSession) { 

    return { 
     goto_path1: function() { 
       //I need get current query in this point 

     }, 
}); 

https://stackoverflow.com/questions/11410059/suggested-bootstrap-boilerplate-sample-for-backbone-marionette-application

在控制器處理我想訪問的動作,查詢參數一樣

controllerThird: function (controller, action, query) 

我該怎麼做?

回答

0

實際上,你可以讓大部分的現有代碼,它仍然可以工作。這與棄用郵件建議的內容一樣簡單。

只需更換控制器

return Marionette.Controller.extend ({ 
    controllerThird: function (controller, action, query) { 
     this.start(action); 
    } 
}) 

隨着木偶對象:

return Marionette.Object.extend ({ 
    controllerThird: function (controller, action, query) { 
     this.start(action); 
    } 
}) 

在這裏看到一個更廣泛的例子

https://marionette.gitbooks.io/marionette-guides/content/en/appendix/approuter/router.html#router-and-controller