Underscore的bindAll:无法读取undefined的属性'bind'

时间:2013-03-15 09:27:34

标签: backbone.js underscore.js

 <!DOCTYPE HTML>
    <html>
    <head>
    <title></title>

    </head>
    <body>

    <div id="menu"></div>
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script> 
        <script src="http://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.3.3/underscore-min.js" type="text/javascript"></script>
        <script src="http://cdnjs.cloudflare.com/ajax/libs/backbone.js/0.9.2/backbone-min.js" type="text/javascript"></script>
        <script src="http://cdnjs.cloudflare.com/ajax/libs/backbone-localstorage.js/1.0/backbone.localStorage-min.js" type="text/javascript"></script>  

    <script type="text/javascript">
    var myView = Backbone.View.extend({
        events: {
            'click #menu': 'insideMenuHandler'
        },
    //for event click
        initialize: function() {
            _.bindAll(this, 'insideMenuHandler', 'outsideMenuHandler');
        },

        render: function() {
            // Both <body> and <html> for paranoia.
            $('body, html').on('click', this.outsideMenuHandler);
            // ...
            return this;
        },

        remove: function() {
            // Clean up after ourselves.
            $('body, html').off('click', this.outsideMenuHandler);
            // ...
        },

        // ...
        outsideMenuHandler: function(e) {
            // ...
            return false;
        }
    });

    var v=new myView({el: '#view-goes-here'});
    v.render();

    </script>
    </body>
    </html>

嘿,我是backbone.js的新手并且不了解下面代码中的错误,我在哪里更改代码以使其正常工作?绑定函数有问题还是出现了其他问题?

1 个答案:

答案 0 :(得分:5)

您在

行中呼叫_.bindAll
 _.bindAll(this, 'insideMenuHandler', 'outsideMenuHandler');

但您在insideMenuHandler

中没有名称为view的任何功能