1

Djangoフレームワークを使用してWebアプリに取り組んでおり、MV分解にBackbone.jsを使用しています。ビューがあり、renderを呼び出します。これにより、div#mainが次のように新しいコンテンツと交換されます。

var GoalListView = Backbone.View.extend({
el: $('#main'),

template: _.template($("#swap").html()),

render: function() {
  $(this.el).html(this.template());
  return this;
}

});

これは期待どおりに機能します(テンプレートのコンテンツでページを変更します)が、次に作成するビューでは、これらの新しいDOM要素にアクセスできません。

 el: $('#newId') 

スワップインしたテンプレートにidnewIdの要素があるにもかかわらず、未定義になります。ただし、この時点でテンプレートスワップはすでに発生しているのに、なぜ新しい要素にアクセスできないのでしょうか。

編集:ありがとう、私はそれがタイミングの問題であることに同意します。しかし、イベントについてはどうでしょうか?

events: {
    'keypress #goal-entry': 'createOnEnter'
 },

それなら、イベントを添付する要素をDOMで検索するオプションはありませんよね?

4

1 に答える 1

2

$('#newId')に割り当てる場合は、それがすでにDOMにあることを確認する必要がありますel。この場合、2番目のビューに使用される要素を挿入する場合、最初にそれを定義する必要はありませんが、initialize()に渡す必要があります。

var SomeView = Backbone.View.extend({
  // do NOT define el or $el or id here
  initialize: function($el) {
    this.$el = $el;
    ... go on do more things...
  }
});

次に、アプリ内の必要な場所から2番目のビューを初期化します。

var someView = new SomeView($('#someID'));
于 2012-06-25T18:43:49.680 に答える