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
Backbone.js 主干本地存储A";url";必须指定属性或函数_Backbone.js_Local Storage - Fatal编程技术网

Backbone.js 主干本地存储A";url";必须指定属性或函数

Backbone.js 主干本地存储A";url";必须指定属性或函数,backbone.js,local-storage,Backbone.js,Local Storage,我正在创建一个小型应用程序,该应用程序基于一个带有主干本地存储插件的主干示例 当保存新模型的数据时,我总是收到错误“必须指定“url”属性或函数” 在阅读了几个类似的主题后,我仍然无法找到原因 型号: directory.models.EmployeeCollection = Backbone.Collection.extend({ localStorage: new Backbone.LocalStorage("EmployeeCollection"), model: d

我正在创建一个小型应用程序,该应用程序基于一个带有主干本地存储插件的主干示例

当保存新模型的数据时,我总是收到错误“必须指定“url”属性或函数”

在阅读了几个类似的主题后,我仍然无法找到原因

型号:

directory.models.EmployeeCollection = Backbone.Collection.extend({

    localStorage: new Backbone.LocalStorage("EmployeeCollection"), 

    model: directory.models.Employee,

    store: directory.utils.store,

    findByName: function(key) {
        this.reset(this.store.findByName(key));
    }

});
directory.views.newEmployeeView = Backbone.View.extend({

    tagName: "div",

    initialize: function() {
        this.template = _.template(directory.utils.templateLoader.get('new-employee'));
    },

    events: {
        "click .save": "saveEmployee"
    },

    render: function(eventName) {
        $(this.el).html(this.template(this.model.toJSON()));
        return this;
    },

    saveEmployee: function(event){
        this.model.set({
            firstName:$('#newFirstName').val(),
            lastName:$('#newLastName').val(),
            title:$('#newTitle').val(),
            city:$('#newCity').val(),
            officePhone:$('#newOfficePhone').val(),
            cellPhone:$('#newCellPhone').val(),
            email:$('#newEmail').val()
        });

        this.model.save();
        window.history.back();

        return false;
    }
});
视图:

directory.models.EmployeeCollection = Backbone.Collection.extend({

    localStorage: new Backbone.LocalStorage("EmployeeCollection"), 

    model: directory.models.Employee,

    store: directory.utils.store,

    findByName: function(key) {
        this.reset(this.store.findByName(key));
    }

});
directory.views.newEmployeeView = Backbone.View.extend({

    tagName: "div",

    initialize: function() {
        this.template = _.template(directory.utils.templateLoader.get('new-employee'));
    },

    events: {
        "click .save": "saveEmployee"
    },

    render: function(eventName) {
        $(this.el).html(this.template(this.model.toJSON()));
        return this;
    },

    saveEmployee: function(event){
        this.model.set({
            firstName:$('#newFirstName').val(),
            lastName:$('#newLastName').val(),
            title:$('#newTitle').val(),
            city:$('#newCity').val(),
            officePhone:$('#newOfficePhone').val(),
            cellPhone:$('#newCellPhone').val(),
            email:$('#newEmail').val()
        });

        this.model.save();
        window.history.back();

        return false;
    }
});

我认为你需要新的模型成为你的收藏的一员,然后再尝试保存它。尝试创建集合的新实例并将其传递给视图(可能在路由器中),如下所示:

new newEmployeeView({ collection: new EmployeeCollection() });
在您看来,您可以使用主干网的创建便利方法(请参阅)将模型的新实例添加到集合中并将其持久化:

this.collection.create({
    firstName:$('#newFirstName').val(),
    lastName:$('#newLastName').val(),
    title:$('#newTitle').val(),
    city:$('#newCity').val(),
    officePhone:$('#newOfficePhone').val(),
    cellPhone:$('#newCellPhone').val(),
    email:$('#newEmail').val()
});

视图的模型属性是否已经是集合的成员?您可以演示如何在视图上设置模型属性吗?该模型尚未在集合中。这是新的。newEmployee:function(){this.slidePage(new directory.views.newEmployeeView({model:new directory.models.Employee()}).render());}…甚至不确定是否必须实例化集合以及在何处执行此操作?请尝试在路由器中创建集合的实例,并在视图上进行设置,就像当前处理模型一样。在您的视图中,您可以这样做。collection.create({'firstName',firstName,etc.etc})。我认为在你坚持之前,这个模型可能需要与你的收藏相关联。create方法将添加并保存模型。为什么我需要在.create()中重复整个JSON?当我刚刚用这些属性创建了一个模型时。有没有一种简单的方法可以将模型及其所有属性添加到集合中?我现在尝试了多种语法,总是从backbone.localstorage.js获得以下错误:无法读取未定义的属性“Deferred”。从Backbone.LocalStorage.syncy方法中,这是一个不同于您开始使用的错误,因此我们可能会有进展;)。您能创建一个最简单的示例来重新创建当前的问题并将其发布到吗?我对JSFIDLE使用了太多的库。我将从头开始制作一个新的应用程序,以更好地理解主干网,而不是详细说明演示。既然我原来的问题解决了,我就接受了你的回答。谢谢你的耐心!谢谢你接受答案。我能理解你想从头开始的理由,但我忍不住认为这有点过激。我认为如果你创造了一把小提琴,解决你的问题应该很容易。链接到外部库非常容易,我猜重新创建这个问题只需要jQuery、主干和本地存储插件。我打赌你可以在10分钟内完成。因为我在从头开始时遇到了相同的错误,所以我为这个主题创建了一个新主题: