backbone.jsの学習を進めています。
ボタンを押すと、テキストをappendするという処理を作りたいのですが、
下記のようにapp.jsに記述すると、
Uncaught ReferenceError: hello is not defined
とエラーになってしまいます。どのように書けば、helloメソッドを読んでくれるでしょうか。なお、backbone.jsのバージョンは最新のものを使っています。(1.3.3)
発生している問題
やってみたことに書いてあるソースコードを実行すると、下記のようなエラーとなる。
Uncaught ReferenceError: hello is not defined
なので、backbone.jsを使ったイベント処理が何も実行できていない状態です。
##やってみたこと
javascript
1 1 (function() { 2 2 3 3 var User = Backbone.Model.extend({ 4 4 defaults:{ 5 5 id: "", 6 6 name : "", 7 7 }, 8 8 initialize:function(firstInitialize){ 9 9 console.log("model initialized"); 10 10 } 11 11 }); 12 12 13 13 var Task = Backbone.Model.extend({ 14 14 defaults: { 15 15 url: '/api/hoge', 16 16 title: "do something!", 17 17 completed: false 18 18 }, 19 19 20 20 initialize: function(){ 21 21 this.on('initialize', this.setRegisterDate); 22 22 this.trigger('initialize'); 23 23 }, 24 24 setRegisterDate: function(){ 25 25 this.set('registerDate', new Date()); 26 26 }, 27 27 toggle: function() { 28 28 this.set('completed', !this.get('completed')); 29 29 } 30 30 31 31 }); 32 32 33 33 var task = new Task(); 34 34 35 35 var TaskView = Backbone.View.extend({ 36 36 template: _.template("<%- title %>"), 37 37 38 38 events:{ 39 39 "click .squre_btn":"onAdd", 40 40 "click .hello-button": "hello" 41 41 }, 42 42 initialize: function() { 43 43 44 44 $('.hello-button').click(hello); 45 45 this.listenTo(this.collection, 'change', function(model) { 46 46 console.log('collection catch ' + model.get('name') + ' model change event'); 47 47 }); 48 48 49 49 }, 50 50 hello: function() { 51 51 alert("hello!"); 52 52 }, 53 53 render: function() { 54 54 var template = this.template(this.model.toJSON() ); 55 55 this.$el.html(template); 56 56 return this; 57 57 }, 58 58 }); 59 59 var taskView = new TaskView({ model: task }); 60
##補足
なお、underscore.jsやbackbone.jsは正常に読み込めており、modelに記載したプロパティはView側から取得してconsole.logで出力されるのを確認済みです。
##追記
html
1echo '<input class="hello-button" style="WIDTH: 70px; type="button" value="more info" name="detailCashing">'; 2
回答1件
あなたの回答
tips
プレビュー