骨干jquery调试chrome控制台不断清除输出

时间:2013-02-11 02:09:07

标签: backbone.js

我正在尝试在线跟踪一个简单的骨干教程。问题是当我点击“发布”时,推文会在日志中发布,但会立即清除。我不确定为什么控制台在打印出tweets.toJSON()之后立即清理自己。我在保存后使用node和livereload2来加载页面。我不认为它是livereload,因为无论livereload运行与否,行为都是相同的。

  1. 我想,一切都包含在自调用匿名jquery函数中。因此,变量不会在DOM中的窗口级别公开。
  2. 它将JQuery变量作为$符号,因此我可以在函数内部使用它。
  3. 我是否正确阅读?

    感谢您的帮助!

    <html>
    <head>
        <title>Backbone Twitter App</title>
    </head>
    <body>
        <h1> Backbone for twitter </h1>
    
        <form id="new-tweet">
            <label>Author:</label> <input id="author-name" name="author-name" type="text" />
            <label>Status:</label> <input id="status-update" name="status-update" type="text" />
            <button>Post</button>
        </form>
    
        <hr/>
    
    
        <script type="text/javascript" src="underscore.js"></script>
        <script type="text/javascript" src="jquery-1.9.0.js"></script>
        <script type="text/javascript" src="backbone.js"></script>
    
    
        <script type="text/javascript">
    
            (function($) {
                var Tweet = Backbone.Model.extend({
                    defaults:function(){
                        return {
                            author: '',
                            status: ''
                        }
                    }
    
                });
    
                var TweetsList = Backbone.Collection.extend({
                    model: Tweet
                });
    
                var tweets = new TweetsList();
    
                $(document).ready(function(){
                    $('#new-tweet').submit(function(ev){
                        console.log('button pressed');
                        var tweet = new Tweet({author: $('#author-name').val(), status: $('#status-update').val()});
                        tweets.add(tweet);
                        console.log(tweets.toJSON());
                    });
                });
            })(jQuery);
    
        </script>
    </body>
    </html>
    

1 个答案:

答案 0 :(得分:0)

您的问题是,当您单击按钮并重新加载页面时,表单正在提交。

在submit()方法中,您可以调用ev.preventDefault()来停止提交表单。