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/7/css/38.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
Backbone.js 带主干和require的TodoMVC无法从服务器获取_Backbone.js_Model_Undefined_Require_Todomvc - Fatal编程技术网

Backbone.js 带主干和require的TodoMVC无法从服务器获取

Backbone.js 带主干和require的TodoMVC无法从服务器获取,backbone.js,model,undefined,require,todomvc,Backbone.js,Model,Undefined,Require,Todomvc,有很多这样的问题。我还没有找到答案 使用带有backbone.js和require.js的TodoMVC示例,我希望从服务器获取数据,而不是从本地存储获取数据 我有一个返回正确json集合的url,模型如下: {"string1": "foo", "string2":"bar", "somefloat":0} 在我的模型(model/todo.js)中,我将默认值更改为: defaults: {string1: '', string2: '',somefloat: 0}, 在我的集合(col

有很多这样的问题。我还没有找到答案

使用带有backbone.js和require.js的TodoMVC示例,我希望从服务器获取数据,而不是从本地存储获取数据

我有一个返回正确json集合的url,模型如下:

{"string1": "foo", "string2":"bar", "somefloat":0}
在我的模型(model/todo.js)中,我将默认值更改为:

defaults: {string1: '', string2: '',somefloat: 0},
在我的集合(collections/todos.js)中,我注释掉localstorage并添加一个url

这使得fetch转到我的服务器,我可以看到它返回json集合

但是由于某些原因,backbone.js第817行中没有定义该模型

    // Prepare a model or hash of attributes to be added to this collection.
    _prepareModel: function (model, options) {
        options || (options = {});
        if (!(model instanceof Model)) {
            console.log(Model);
            var attrs = model;
            console.log(attrs.Kana);
            options.collection = this;

            //ERROR IN THIS LINE: Uncaught TypeError: undefined is not a function 
            model = new this.model(attrs, options);

            if (!model._validate(model.attributes, options)) model = false;
        } else if (!model.collection) {
            model.collection = this;
        }
        return model;
    },

为什么我不使用localstorage时模型未定义?

您还需要在模型中设置属性
urlRoot

var TodoModel = Backbone.Model.extend({

    urlRoot: "/Practice/GetCollection",

您是否也在集合的函数定义中注释了
“lib/backbone/localstorage”
?因为据我所知,主干本地存储只需替换默认的主干.Sync()函数,因此,如果您尝试使用经典的ajax方法获取数据,它将无法工作。感谢您的回复。在collections/todos中,我注释掉了
'lib/backbone/localstorage'
,“和
localstorage:newstore('todos-backbone'),
,然后插入了
url:'/Practice/GetCollection',
。我还尝试添加了
初始化:函数(){this.model=Todo;},将
添加到集合中。没有任何区别。您是否将
urlRoot
属性添加到模型中?它应该是:
urlRoot:'/Practice/GetCollection'
不,我没有。它起作用了:o)我想知道为什么我需要使用它。api说了类似于“如果您在集合之外使用模型,请使用urlRoot”“。我希望当我开始更多地使用todoMVC示例时,它会更有意义。非常感谢英格罗,不客气!老实说,我不知道为什么需要它(正如您所说的文档中没有提到),但当我开始使用主干时,我遇到了同样的问题,所以。。。在一开始,有些事情不是很直观,但一旦你习惯了,你就会喜欢它。我还要加上答案!不幸的是,它不起作用。问题依然存在。我不知道我还能提供什么信息-(好吧,好吧。我的错。我将接受Ingros解决方案,并添加注释(显然)您还应该从集合的参数列表中删除存储。我很高兴您找到了解决方案:)