我怎样才能理解骨干语法

时间:2013-10-17 12:06:29

标签: javascript css backbone.js

我正在学习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自动更改时,模型('Slidebar')会触发sidebarObject.on()

我不明白的是:

  1. 我们将2个参数名称model,color23传递给sidebarObject.on()的第二个参数。我对这些论点一无所知。
  2. 2.根据我的理解模型在我的例子中是Sidebar。是的。

    任何人都可以帮助我。

    感谢。

1 个答案:

答案 0 :(得分:2)

是的,您的第二个假设是正确的,在上面的示例中,补充工具栏是模型。

有两个参数传递给回调函数:

  1. 事件最初发生的模型
  2. 与事件一起传递的值
  3. 请注意,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/是一个值得关注的网站。

    我希望现在它更清楚了。