我正在使用设计,带骨干的导轨。我所有的主干路由都工作得很好。但是像 /accounts/login 这样应该由 rails 渲染的非骨干路由正在与骨干路由器一起使用。
SS.Routers.ApplicationRouter = Backbone.Router.extend({
initialize: function() {
this.el = $("#content");
},
routes: {
"": "home"
},
"home": function () {
console.debug("Got home request");
var view = new SS.Views.Home();
this.el.empty().append(view.render());
}
});
对 /accounts/login 的实际请求/响应来自 rails 日志。但是之后会触发 Backbone 主根目录并呈现我的主页。
我的布局有
$(function () {
SS.init();
});
从
window.SS = {
Models: {},
Collections: {},
Views: {Providers: {}},
Routers: {},
init: function (data) {
console.debug("Initializing Backbone Components");
new SS.Routers.ApplicationRouter();
new SS.Routers.ProvidersRouter();
if (!Backbone.history.started) {
Backbone.history.start();
Backbone.history.started = true;
};
}
};
这再次触发了我的家乡路线。
主干中的“”路由不应该是通配符 /accounts/login ,但它是。
一点调试告诉我 /accounts/login 正在被 "" 吞噬,因为该片段是一个空字符串。
在骨干路由不匹配的所有情况下,该片段都是一个空字符串。
来自骨干网 0.9.2 的代码
loadUrl: function(fragmentOverride) {
var fragment = this.fragment = this.getFragment(fragmentOverride);
var matched = _.any(this.handlers, function(handler) {
if (handler.route.test(fragment)) {
console.debug(handler);
console.debug(fragment);
handler.callback(fragment);
return true;
}
});
return matched;
},
有什么建议么?