0

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

  1. 我认为一切都包含在自我调用匿名 jquery 函数中以进行范围界定。这样变量就不会暴露在 DOM 的窗口级别。
  2. 它将 JQuery 变量作为 $ 符号,以便我可以在函数内部使用它。

我读对了吗?

感谢您的帮助 !。

<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>
4

1 回答 1

0

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

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

于 2013-02-11T02:17:59.433 回答