javascript - BackboneJS 未捕获错误 : A "url" property or function must be specified

标签 javascript jquery backbone.js asp.net-web-api

我收到此错误。我可以使用 BackboneJs 执行读取和删除函数,但是当我执行 add 方法时出现错误,任何帮助将不胜感激。 JSfiddel路径是http://jsfiddle.net/2wjdcgky/

BackboneJS Uncaught Error: A "url" property or function must be specified 

$(function() {

型号

var modelContact = Backbone.Model.extend({
    defaults: function() {
        return {
            Id: 0,
            Name: "",
            Address: ""
        };
    },
    idAttribute: "Id"
});

模型集合

var contactCollection = Backbone.Collection.extend({
    model: modelContact,
    url: function() {
        return 'api/Contact';
    },
    add: function(model) {
        this.sync("create", model); // Error On create
    },
    remove: function(model) {
        this.sync("delete", model); //Runs Fine
    }
});
var contacts = new contactCollection;

查看

var contactView = Backbone.View.extend({
    tagName: "tr",
    events: {
        "click a.destroy": "clear"
    },
    template: _.template($("#newContacttemplate").html()),
    initialize: function() {
        this.model.on("change", this.render, this);
        this.model.on('destroy', this.remove, this);
    },
    render: function() {
        this.$el.html(this.template(this.model.toJSON()));
        return this;
    },
    clear: function(e) {
        contacts.remove(this.model); // runs fine
    }
});

主视图

var main = Backbone.View.extend({
    el: $("#contactApp"), 
    events: {
        "click #btnsave": "CreateNewContact"
    },
    initialize: function() {
        this.Nameinput = this.$("#contactname");
        this.Addressinput = this.$("#contactaddress");

        contacts.on("add", this.AddContact, this);
        contacts.on("reset", this.AddContacts, this);
        contacts.fetch();
    },
    AddContact: function (contact) {
        console.log("AddContact");
        var view = new contactView({ model: contact });
        this.$("#tblcontact tbody").append(view.render().el);
    },
    AddContacts: function () {
        console.log("AddContacts");
        contacts.each(this.AddContact);
    },
    CreateNewContact: function (e) {
        console.log(e);
        //Generate an error "BackboneJS Uncaught Error: A "url" property or function must be specified"
        contacts.add({ Name: this.Nameinput.val(), Address: this.Addressinput.val() });
    }
});
var m = new main;

});

最佳答案

您的 JSFiddle 缺少 Backbone 引用等。

工作更新:http://jsfiddle.net/apt7hchL/2/

代码更简单(无需在集合上定义那些 addremove 方法!)。还有更常见的 Javascript 编码风格约定。

请注意,我必须手动生成“Id”属性才能创建多个联系人。当您默认设置 Id = 0 时,不会添加具有相同属性的第二个模型,因为 Backbone 会发现集合中已存在 id=0 的模型。

当你想要保存时,调用model.save()方法。不要手动调用同步,通常不需要!

要将模型在添加到集合之前保存到数据库,请使用:

createNewContact: function (e) {
  e.preventDefault();
  var self = this;
  var newContact = new ContactModel({                   
    Name: this.$("#name").val(),
    Address: this.$("#address").val()
  });
  newContact.save({ success: function(model){
    self.collection.add(model);
  });

  //clear form
  this.$("#name").val("");
  this.$("#address").val("");

}

关于javascript - BackboneJS 未捕获错误 : A "url" property or function must be specified,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26405278/

相关文章:

表单输入和选择的 javascript index()

javascript - jQuery:点击元素不包括点击子元素

javascript - 函数转化为函数调用javascript

javascript - Backbone .js : body become undefined when loaded for the 2nd time (windows mobile)

javascript - 如何将 jQuery 中的值与固定数字进行比较?

javascript - 如何设置 Ajax POST 请求以防止空响应出现 "no element found"?

javascript - 使用回调mysql函数

javascript - HTML 溢出问题 - 需要显示整个内容

javascript - Node.js 服务器/客户端模块困惑,EventEmitter 问题

javascript - 如何使用 jQuery 部分更新 DOM