如何在牵线木偶控制器中获取查询参数

时间:2017-03-20 15:35:44

标签: javascript backbone.js marionette

在Marionette的早期版本中,我们可以使用Marionette Controller

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对象。代替   使用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

在Controller处理程序中,我想要访问操作,查询类似

的参数
controllerThird: function (controller, action, query)

我该怎么做?

1 个答案:

答案 0 :(得分: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