0

いくつかの jQuery コードを Backbone に移動することを検討しており、全く初心者の質問があります。標準のhtmlだけに存在する(バックボーンビューに関連付けられていない)jQueryイベントの大規模なセットがあります。それらを処理する適切な場所はどこですか。jQueryで簡単なこと:

<div class='my-thing'>click me</div>
<script>
  $(document).ready(function(){
     $('.my-thing').on('click',function(){
       alert('say hello');
     });
  });
</script>

バックボーンでは、次のようになります。

events: {
     "mouseenter .my-thing":"say_again"
 },
 say_again: function(){
   alert('i want to say something');
 },

しかし、これをどこに置くのでしょうか?それともこれを構造化しますか?

thx事前に

4

1 に答える 1

2

通常、イベントはビューごとに整理します。ここでイベントを宣言します。これには、UI のレイアウトをモジュール化して、各イベントをビューの範囲に制限できるようにする必要があります。

テンプレート

<script type='text/template' id='say-template'>
    <div class='say-container'>
        <div class='my-thing'>click me</div>
    </div>
</script>

意見

var SayView = Backbone.View.extend({
    initialize: function() {
        _.bindAll(this, "render");
        this.render();
    },

    el: "#container",

    template: _.template($("#say-template").html()),

    events: {
        "mouseenter .my-thing": "say_again"
    },

    say_again: function() {
        alert('i want to say...');
    },

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

var sayView = new SayView();

HTML

<div id="container"></div>

これが実際のデモです。


もちろん、必要に応じて、アプリケーションのグローバル スコープで通常の方法でイベントを接続することを妨げるものは何もありません。MVC パターンを壊す傾向があるため、避けるのが最善です。

于 2012-11-21T03:49:45.373 に答える