0

私は学んでいbackbone.jsます。backbone.js のドキュメントから次のコードを見つけました。

 //cretaing class name as Sidebar with extends Backbone.Model class  
 var Sidebar = Backbone.Model.extend({
                promptColor:function() {
                    var cssColor = prompt("Please enter a CSS color:");
                    this.set({color1: cssColor});
                }
        });
  //cretaing object for Sidebar class
        var sidebarObject = new Sidebar();
  //following statement not understand
        sidebarObject.on("change:color1", function(model, color23) {
            $('#body1').css({background: color23})
        });

私が理解していること:

属性color1が自動的に変更されるたびに model('Slidebar') triggers sidebarObject.on().

わからないこと:

  1. model,color23の 2 番目の引数に2 つの引数名を渡していsidebarObject.on()ます。私はその議論について何も理解していませんでした。

2.私の理解モデルはSidebar私の例にあります.それは正しいですか.

誰でも私を助けることができます。

ありがとう。

4

1 に答える 1

2

はい、2 番目の仮定は正しいです。上記の例では、サイドバーがモデルです。

コールバック関数に渡される 2 つのパラメーターがあります。

  1. イベントが最初に発生したモデル
  2. イベントとともに渡される値

sidebarObjectは「色」変更イベントのみをリッスンすることに注意してください。モデルの特定の属性を変更すると、このようなイベントが生成されます。

this.set({color1: cssColor});

ここで、リスナーを次のように変更すると:

sidebarObject.on("change:taste", function(model, color23) {
    $('#body1').css({background: color23})
});

this.set({color: cssColor});「味」の変化をリッスンするため、呼び出されても発火しません。

this.set({taste: 'good'});

上記の例をフィドルに分けて、遊んでいただけるようにしました: http://jsfiddle.net/CtzsR/1/

このすべてに慣れていない場合は、 http://backbonetutorials.com/what-is-a-model/は一見の価値があるサイトです。

より明確になったことを願っています。

于 2013-10-17T12:43:57.740 に答える