使用 pushState 的 HTML5 主干木偶应用程序中的路由:如果有多个组件到 url,则 true 将失败



我有一个骨干木偶应用程序路由问题让我发疯。 我为我拥有的每个模块设置了Marionette.AppRouter。 只要 url 只有一个组件,路由就可以正常工作。 当我们有第二个"目录"甚至 :id 时,我在浏览器中收到索引中包含的每个文件的语法错误.html..包括索引本身.html。

例如我的应用程序/文章工作正常。 myapp/articles/78给了我问题。 我什至测试了在路由器中创建两个应用程序路由......"文章"和"文章/某物"。 我可以去http://myapphttp://myapp/articlehttp://myapp.article/something给出了语法并且从不处理任何内容。

我在下面的article_app.js显示试图让文章/:id工作..但是每次都失败,并在所有这些下面发布错误

azBest.module("ArticleApp",function(ArticleApp, azBest, Backbone, Marionette, $, _) {
ArticleApp.Router = Marionette.AppRouter.extend({
    appRoutes: {
        "article": "returnToResultsPage",
        "article/:id": "test"
    },
});
var API = {
    test: function(id) {
        console.log("testing...id:" + id);
        azBest.trigger("storefront:show");
    },
    returnToResultsPage: function() {
        azBest.trigger("storefront:show");
    }
};
azBest.on("article:show", function(model) {
    Backbone.history.navigate("article/"+model.get("articleid"));
    azBest.ArticleApp.Show.Controller.showArticle(model);
});
azBest.addInitializer(function(){
    new ArticleApp.Router({
        controller: API
    });
});

});


从火狐的控制台捕获。

语法错误

:语法错误

78(276行)语法错误:语法错误

json2.js(第 1 行)语法错误:语法错误

下....最小.js(第 1 行)语法错误:语法错误

背波....最小.js(第 1 行)语法错误:语法错误

马里恩。。。。最小.js(第 1 行)语法错误:语法错误

spin.min.js(第 1 行)语法错误:语法错误

spin.jquery.js (第 1 行)语法错误:语法错误

jquery...-min.js (第 1 行)语法错误:语法错误

应用程序.js(第 1 行)语法错误:语法错误

storefront_app.js(1号线)语法错误:语法错误

results_app.js(第 1 行)语法错误:语法错误

article_app.js(第 1 行)语法错误:语法错误

视图.js(第 1 行)语法错误:语法错误

特色项目.js(第 1 行)语法错误:语法错误

热门项目.js(第 1 行)语法错误:语法错误

广告.js(第 1 行)语法错误:语法错误

文章.js(第 1 行)语法错误:语法错误

list_view.js(1号线)语法错误:语法错误

list_c...勒.js(第 1 行)语法错误:语法错误

show_view.js(1号线)语法错误:语法错误

show_c...勒.js(第 1 行)语法错误:语法错误

show_view.js(1号线)语法错误:语法错误

show_c...勒.js(第 1 行)语法错误:语法错误

show_view.js(1号线)语法错误:语法错误

show_c...勒.js(第 1 行)语法错误:语法错误

show_view.js(1号线)语法错误:语法错误

show_c...勒.js(第 1 行)语法错误:语法错误

list_view.js(1号线)语法错误:语法错误

list_c...勒.js(第 1 行)语法错误:语法错误

show_view.js(1号线)语法错误:语法错误

show_c...勒.js(第 1 行)引用错误: 未定义 azBest

azBest.start();

78(276行)


我不知道是什么导致了语法错误。 除了第一个和最后一个错误之外的每个错误似乎都指向<!DOCTYPE html>

我想出了问题...

当 apache 重写完成它的事情时,它会更改基础,因此无法正确找到我包含的脚本。

为了解决这个问题,我将我的htdocs更改为:

RewriteEngine On
Options +FollowSymLinks
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !index
RewriteRule (.*) index.html [L,QSA]

我还将包含的脚本更改为相对的,并添加到索引的头部.html。

最新更新