使用pushState在html5 backbone-marionette app中进行路由:如果要将多个组件添加到url,则为true

时间:2013-10-16 23:10:34

标签: html5 marionette pushstate

我有一个主干 - 牵线木偶应用程序路由问题让我疯狂。我为我的每个模块设置了Marionette.AppRouter。只要网址只有一个组件,路由就可以正常工作。当我们有第二个“目录”甚至是:id时,我在浏览器中为index.html中包含的每个文件都会出现语法错误..包括index.html本身。

例如,

myapp / articles工作正常。 myapp / articles / 78给了我这些问题。我甚至测试过在路由器中创建两个appRoutes ......“article”和“article / something”。我可以转到http://myapphttp://myapp/article,但http://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
    });
});

});


从firefox的控制台捕获。

SyntaxError:语法错误

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

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

低于...... min.js(第1行) SyntaxError:语法错误

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

show_c ... ller.js(第1行) ReferenceError:未定义azBest

azBest.start();

78(第276行)


我对导致语法错误的原因感到茫然。除第一个和最后一个之外的每个错误似乎都指向<!DOCTYPE html>

1 个答案:

答案 0 :(得分:1)

我弄明白了这个问题......

当apache重写执行其操作时,它会更改基础,因此找不到任何包含的脚本。

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

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

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