1

私はバックボーンに不慣れで、基本的な問題のように見えるものに苦労しています。パラメータを受け取り、それを使用してモデルを見つけ(この時点でハードコードされています)、モデルデータをビューにレンダリングするように設定されたルートがあります。

「project1」のパラメータを使用して、ビューのレンダリング関数でにアクセスできますが、にアクセスthis.modelproject1.attributesたり、使用したりすることproject1.get('name')はできません。(注:後者のいずれかにアクセスしようとすると、アプリが爆撃されます。)this.model.attributesthis.model.get('name')this.model.toJSON()

これは「これ」のバインドの問題ですか?どんな助けでも大歓迎です。

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 に答える