簡単なバックボーン チュートリアルをオンラインで実行しようとしています。問題は、「投稿」をクリックすると、ツイートがログに投稿されますが、すぐにクリアされることです。tweets.toJSON() を出力した直後にコンソールがクリーンアップする理由がわかりません。node と livereload2 を使用して、保存後にページをロードしています。livereload が実行されているかどうかに関係なく、動作は同じであるため、livereload ではないと思います。
- すべてが、スコーピングのために自己呼び出しの匿名jquery関数にラップされていると思います。変数が DOM のウィンドウ レベルで公開されないようにします。
- $ 記号として 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>