今回はViewにイベントを追加してみる。
一応Viewのおさらいをしておくと、View=画面になる。
画面にはボタンなどが配置されていて、 マウスやタッチパネルで操作ができ、ユーザからイベント発行される。
今回はそのボタンとイベントを作成してみようと思う。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>example</title>
<link rel="stylesheet" href="./jquery.mobile-1.1.1/jquery.mobile-1.1.1.min.css" />
<link rel="stylesheet" href="my.css" />
<style>
</style>
<script src="underscore.js"></script>
<script src="json2.js"></script>
<script src="jquery-1.7.1.min.js"></script>
<script src="backbone-min.js"></script>
<script src="./jquery.mobile-1.1.1/jquery.mobile-1.1.1.min.js"></script>
<script src="my.js"></script>
</head>
<body>
<div data-role="page" id="page1">
<div data-theme="a" data-role="header"><h3>sample2</h3></div>
<div data-role="content" style="padding: 15px">
<!-- content start -->
<div id="myview"></div>
<!-- content end -->
</div>
<div data-theme="a" data-role="footer" data-position="fixed"><h3></h3></div>
</div>
<!-- underscore template start -->
<script type="text/template" id="hello-template">
<button id="btn_push">Push</button>
<h3><%= part1 %>, <%= part2 %>!</h3>
<h3>counter <%= counter %></h3>
</script>
<!-- underscore template end -->
<!-- backbone start -->
<script>
(function($){
MyView = Backbone.View.extend({
el: '#myview'
,initialize: function(){
this.counter = 0;
this.render();
}
,render: function(){
var data = { part1: 'hello', part2: 'backbone!', counter: this.counter }
var tmpl = _.template($("#hello-template").html(), data);
this.$el.html(tmpl);
this.$el.trigger('create');
}
,events: {
'click button#btn_push': 'evt_push'
}
,evt_push: function(){
this.counter++;
this.render();
}
});
var myview = new MyView();
})(jQuery);
</script>
<!-- backbone end -->
</body>
</html>
前回のソースから、テンプレートにボタンを配置して、ボタンが押されたらカウンターが+1されるようにした。
ボタンID = btn_push
イベントID=evt_push
1つ注意しておいてほしいのが、render内にタグを書き換えた後にtriggerでcreateしている所。
これを行わないとjquery mobileのボタン装飾などがされなくなるので入れておく必要がある。
関連記事
jquery mobile + backbone サンプル(1)

0 件のコメント:
コメントを投稿