【问题标题】:Backbone constructor not working骨干构造函数不起作用
【发布时间】:2015-05-11 06:34:09
【问题描述】:

我正在尝试一个使用 express 的简单主干程序,该程序显示名称和 twitter 句柄,并允许通过使用 jam 中的模板对其进行更新。但是,它不起作用。

这是我的 server.js 文件:

var express= require("express"),
bodyparser= require("body-parser");

var app= express();

app.use(express.static(__dirname+ "/public"));
app.use(bodyparser.json());

app.get("/", function(req, res){
    res.render("index.jade");
});

app.listen(3002);

这是我的 index.jade 文件:

doctype html

#main

script(type="text/template" id="showuser")
    <h1> <%= name %> </h1> 
    <p>Twitter: <a href='"http://twitter.com/"<%= twitter %>'> <%= twitter %> </a> </p>

script(type="text/template" id="edituser")
    <h1> Editing </h1> 
    <p> Name: <input type="text" name="name" id="name" value="<% name %>" /> </p>
    <p> Twitter Handle: <input type="text" name="twitter" id="twitter" value="<% twitter %>" /> </p>
    <p> <button> Update </button> </p>

script(src= "jquery.js")
script(src= "underscore.js")
script(src= "backbone.js")
script(src= "theapp.js")

这是我的 theapp.js 文件:

var User= new Backbone.Model.extend({});

var Showview= new Backbone.View.extend({
    template: _.template($("#showuser").html()),
    initialize: function(){
            this.model.on("change", this.render, this);
    },
    render: function(){
            this.$el.html(this.template(this.model.toJSON()));
            return this;
    }
});

var Editview= Backbone.View.extend({
    template: _.template($("#edituser").html()),
    events: {
        "click button": "savechange"
    },
    render: function(){ 
            this.$el.html(this.template(this.model.toJSON()));
            return this;
    },
    savechange: function(){
            this.model.set({name: $("#name").val(), twitter: $("#twitter").val()});
    }
});

var me= new User({name: "Anna", twitter: "anna9090"}),
showview= new Showview({model: me}),
editview= new Editview({model: me});

$("#main").append(showview.render().el).append(editview.render().el);

我得到一个错误:undefined is not a function就行了:

var me= new User({name: "Anna", twitter: "anna9090"}),

在文件 theapp.js 中

【问题讨论】:

    标签: javascript node.js backbone.js pug


    【解决方案1】:

    您应该在扩展主干模型时删除new 运算符。

    var User = Backbone.Model.extend({});
    // ...
    var me = new User({name: "Anna", twitter: "anna9090"}),
    

    【讨论】:

    • 并在 Showview 中扩展 Backbone.View 时删除新的
    • @VijaySingh 欢迎您。是的,我没有注意到这一点。为什么尴尬?每个程序员都会犯一些错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多