1

我是 Backbone 的新手,正在努力解决看似基本的问题。我设置了一个路由来接收一个参数,用它来定位一个模型(此时是硬编码的),并在视图中渲染模型数据。

使用“project1”的参数,在我的视图的渲染功能中,我可以访问,this.model但我不能访问或或使用. (注意:试图访问后面的任何一个都会导致应用程序爆炸。)project1.attributesproject1.get('name')this.model.attributesthis.model.get('name')this.model.toJSON()

这是一个“this”绑定问题吗?任何帮助表示赞赏。

var Router = Backbone.Router.extend({
  routes: {
    "work/:project" : "project"
  },
  project: function (project) {
    $('#content').html(new ProjectView({model:project}).render().el);
  }
});

var ProjectView = Backbone.View.extend({
  id: "project",
  render: function () {
    $(this.el).html(this.template(this.model.toJSON()));
    return this;
  }
});

var Project = Backbone.Model.extend({});

var project1 = new Project({ 
  name: "Project1", 
  description : "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat."
});
4

1 回答 1

1

正如评论已经提到的那样,您的基本问题是您将字符串传递给视图,但该视图需要一个模型。这一行:

$('#content').html(new ProjectView({model:project}).render().el);

问题是:project需要是 的实例Backbone.Model,但不是。那条线应该看起来像这样:

var project1 = new Project({ 
    name: "Project1", 
    description : "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat."
});
$('#content').html(new ProjectView({model: project1}).render().el);
于 2013-01-17T20:03:17.580 回答