0

そのため、この質問に関連する他の投稿を見てきましたが、彼らの提案を取り入れようとしても、問題を解決できないようです。コードは次のとおりです。

ここで何が間違っていますか?また、アプリケーションを開始するための最良の方法は何ですか?

アプリケーション全体:

var Person = Backbone.Model.extend({

defaults : {
    name : ""
}

});

var PersonView = Backbone.View.extend({

el : $('body'),

tagName: 'li',

initialize : function() {
    this.render();
},

render : function(){
    var template = _.template( $("#person").html(), {} );

    this.$el.html(template);

    return this;
}

});

HTML とテンプレート:

    <script type="text/template" id="person">
        <h1><%= name %></h1>
    </script>

    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
    <script type="text/javascript" src="js/underscore.js"></script>
    <script type="text/javascript" src="js/backbone.js"></script>
    <script type="text/javascript" src="app.js"></script>
4

2 に答える 2

1

一見すると、DOM の場所を正しく定義していないように見えます。

el : $('body'),

tagName: 'li',

elオブジェクトではなく jQuery セレクター文字列にする必要があります

el : 'body'

しかし、その後、有効になるのでthis.$el、タグにデータを入れようとします。$('body')this.$el.html(template)<body>

tagName: 'li'複数の PersonView が必要なように見えるので、elプロパティをまったく定義せずthis.$el、ビューがレンダリングされたら、必要な親要素に追加することをお勧めします。

于 2013-07-16T10:55:53.187 に答える
0

さらに調べてみると、「アプリケーション全体」は、何も初期化していないことを示唆しています。

そこにあるJavascriptは、PersonクラスとPersonViewクラスを定義しています。おそらく、Person クラスの 1 つ以上のオブジェクトをインスタンス化し、次に各 Person の PersonView もインスタンス化する必要があります。これはnewmu が短すぎる言及であるため、 を使用して実現されます。

事実上、あなたが持っているコードはセットアップです。今、それを開始する必要があります。

var joe = new Person;
var joeView = new PersonView({ person: joe });

そのスニペットは、PersonView で期待していることを前提としていますが{ person: joe }、そうではありませんが、スローされたエラーはより良い方向を示しているはずです。

于 2013-07-16T11:05:42.827 に答える