【问题标题】:bacbone.router.extend not working骨干网.router.extend 不工作
【发布时间】:2015-04-09 10:08:40
【问题描述】:

Backbone.Router.extend 给我错误:“extend”不能用于 undefined
Nodejsexpress也在这个项目中使用。
但我没有在 app.js
中提及与主干相关的任何内容 下面是我的 index.htmlma​​in.js
我有一种感觉,jquery、下划线和主干文件可能无法正确加载,因此发生此错误
骨干中的初学者。非常感谢任何帮助

index.html

    <!DOCTYPE html>
    <html>
        <head>
            <title></title>
            <link rel="stylesheet" href="/stylesheets/style.css">
            <script src="javascripts/jquery.min.js"></script>
            <script src="javascripts/json2.js"></script>
            <script src="javascripts/underscore-min.js"></script>
            <script src="javascripts/backbone-min.js"></script>
            <script src="javascripts/main.js"></script>
        </head>
        <body>

            <h1>< title </h1> 
            <p>Welcome to  world of html</p>

         </body>
    </html>

ma​​in.js

$(document).ready(function(){

    var Theater = {
        Models: {},
        Collections: {},
        Views: {},
        Templates:{},
        Routers:{}
    }

    Theater.Models.Movie = Backbone.Model.extend({});


    Theater.Collections.Movies = Backbone.Collection.extend({
        model: Theater.Models.Movie,
        url: "/json",
        initialize: function(){
            console.log("Movies initialize")
        }
    });


    Theater.Routers = Backbone.Router.extend({
        initialize:function(){  console.log("defaultRoute");},
        routes: {
            "": "defaultRoute" 
        },
        defaultRoute: function () {
            console.log("defaultRoute");
        }
    });

    console.log("gonna call approuter");
    var appRouter = new Theater.Routers();
    Backbone.history.start();

});

【问题讨论】:

  • 你使用的Backbone是什么版本的?
  • @suish: // Backbone.js 0.3.3

标签: backbone.js backbone-routing


【解决方案1】:

大量微小的调整和微小的错误修正,最好通过查看提交差异来查看。 HTML5 pushState 支持,通过选择加入启用:Backbone.history.start({pushState: true})。为了清楚起见,控制器被重命名为路由器。 Collection#refresh 已重命名为 Collection#reset,以强调它既可以使用新模型重置集合,也可以在不使用参数时清空集合。

0.5.0 的主干更改日志

http://backbonejs.org/

Backbone 的 Router 在版本 0.5 时被称为 Controller 并重命名为 Router

只需将您的 Backbone 和 Underscore 文件替换为新版本或使用 Controller 代替。那么你的代码应该可以工作了。

由于 Backbone 曾经存在的错误,我强烈建议更新您的 Backbone 文件。

【讨论】:

  • 我用控制器替换它并且它工作....但正如你所建议的,我从'cdnjs.com/libraries/backbone.js'获取了主干.js,现在它显示与 bacbone-min.map 相关的错误。 ………有什么建议吗?
  • 不同的是story.map文件本身只是js的sourceMapping文件,这意味着它不需要运行代码。但无论如何,使用它的缩小版//cdnjs.cloudflare.com/ajax/libs/backbone.js/1.1.2/backbone-min.js 然后不再出现地图文件错误。
  • 现在地图文件错误似乎消失了。但现在又出现了一个指向 Backbone.Model.extend 作为未定义函数的错误。有什么想法???...
  • 好的,现在我也更新了下划线文件。地图文件错误似乎消失了。现在指向'Backbone.history.start()'的错误似乎已经上升............为什么????????
猜你喜欢
  • 2023-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-02
  • 1970-01-01
  • 1970-01-01
  • 2013-02-10
  • 2012-09-22
相关资源
最近更新 更多