Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Requirejs+;主干未捕获类型错误:无法读取属性';型号';未定义的_Javascript_Backbone.js_Requirejs - Fatal编程技术网

Javascript Requirejs+;主干未捕获类型错误:无法读取属性';型号';未定义的

Javascript Requirejs+;主干未捕获类型错误:无法读取属性';型号';未定义的,javascript,backbone.js,requirejs,Javascript,Backbone.js,Requirejs,我从脊梁骨开始。我使用Require加载modul,并得到了这个错误。有人能解释一下吗?在user.js文件中,我在尝试创建Backbone.Model.extend时遇到了这个错误。我使用了Backbone.js0.9.10、jqueryv1.9.0、requirejs2.1.4和下划线1.4.4。多谢各位 index.html <!doctype html> <html lang="en"> <head> <title></tit

我从脊梁骨开始。我使用Require加载modul,并得到了这个错误。有人能解释一下吗?在user.js文件中,我在尝试创建Backbone.Model.extend时遇到了这个错误。我使用了Backbone.js0.9.10、jqueryv1.9.0、requirejs2.1.4和下划线1.4.4。多谢各位

index.html

<!doctype html>
<html lang="en">
<head>
    <title></title>
    <!-- Load the script "js/main.js" as our entry point -->
    <script data-main="js/main.js" src="js/libs/require/require.js"></script>
    <link rel="stylesheet" type="text/css" href="stylesheets/style.css">
</head>

<body>

<div id="container">

    <div id="menu"></div>

    <div id="content"></div>

</div>
</body>
</html>
app.js

define(['jquery', 'underscore', 'backbone', 'router'], function($, _, Backbone, Router) {
    var initialize = function(){
        Router.initialize();
        console.log('app.js');
    };

    return {
        initialize: initialize
    };
});
路由器.js

define([
    'jquery',
    'underscore',
    'backbone',
    'views/home/login'
    //'views/room',
//    'views/friend',
//    'views/play',
//    'views/money'
], function ($, _, Backbone, loginView) {
    console.log('router.js');
    var AppRouter = Backbone.Router.extend({
        routes:{
            '/home':'showHome',
            '*actions':'defaultAction'
        },
        showHome:function () {
            loginView.render();
        },
        defaultAction:function (actions) {
            console.log('No route:', actions);
        }
    });

    var initialize = function(){
        var app_router = new AppRouter;
        Backbone.history.start();
    };
    return {
        initialize: initialize
    };
});
login.js(主干视图)

user.js(主干模型)

users.js(主干集合)


我不能上传我的照片。但是您可以在这个链接中看到。

也许您的main.js文件中缺少了一些垫片配置,请阅读这里:

您可以尝试添加:

shim: {
    'backbone': {
        deps: ['jquery','underscore'],
        exports: 'Backbone'
    }
}

使用@Ingro所说的,并在调用渲染模板时尝试使用默认下划线标记

例如:

main.js

require.config({
    paths:{
        jquery:'libs/jquery/jquery-min',
        underscore:'libs/underscore/underscore-min',
        backbone:'libs/backbone/backbone-min',
        templates:'../templates'
    }
});

require(['app'], function (App) {
    console.log('____main.js')
    App.initialize();
    console.log('main.js')
});
require.config({
    paths:{
        jquery:'libs/jquery/jquery-min',
        underscore:'libs/underscore/underscore-min',
        backbone:'libs/backbone/backbone-min',
        templates:'../templates'
    },

    shim: {
        backbone: {
            deps: ['jquery','underscore'],
            exports: 'Backbone'
        }
    }
});
require(['app'], function (App) {
    console.log('____main.js')
    App.initialize();
    console.log('main.js')
});
在任何使用下划线模板的文件中,例如“login.js”,请使用以下命令:

define([
    'backbone',
    'collections/home/users',
    'text!templates/home/login.html'
], function(Backbone, usersCollections, homeLoginTemplate){
    var loginView = Backbone.View.extend({
        el: $('container'),
        render: function(){
            var data = {};
            var compiledTemplate = _.template(homeLoginTemplate);
            this.el.append(compiledTemplate);
        }
    });
    console.log('login.js');
    return new loginView;
});
jquery和下划线在主干网请求调用中默认都使用。
我希望这些对您有所帮助。

我确信该错误也为您提供了行和堆栈跟踪?var userModel=Backbone.Model.extend({…});你能很清楚错误是什么吗?这方面有什么更新吗?。我得到了同样的错误与完全相同的供应商版本Nope,与垫片配置和相同的插件版本它的工作对我来说很好。。。
shim: {
    'backbone': {
        deps: ['jquery','underscore'],
        exports: 'Backbone'
    }
}
require.config({
    paths:{
        jquery:'libs/jquery/jquery-min',
        underscore:'libs/underscore/underscore-min',
        backbone:'libs/backbone/backbone-min',
        templates:'../templates'
    },

    shim: {
        backbone: {
            deps: ['jquery','underscore'],
            exports: 'Backbone'
        }
    }
});
require(['app'], function (App) {
    console.log('____main.js')
    App.initialize();
    console.log('main.js')
});
define([
    'backbone',
    'collections/home/users',
    'text!templates/home/login.html'
], function(Backbone, usersCollections, homeLoginTemplate){
    var loginView = Backbone.View.extend({
        el: $('container'),
        render: function(){
            var data = {};
            var compiledTemplate = _.template(homeLoginTemplate);
            this.el.append(compiledTemplate);
        }
    });
    console.log('login.js');
    return new loginView;
});