无法捕获<a> href with Backbone&#39;s Events function

时间:2015-10-23 04:28:47

标签: javascript backbone.js javascript-events event-handling chaplinjs

Hello i am not able to catch onclick events in the events object in backbone. I am using the link_to in rails to generate the link. Can someone help me out here: HTML :

<div id="flash-messages">
<ul>
<li style="opacity: 1;">
<li style="opacity: 1;">
<li style="opacity: 1;">
<div class="alert alert-info">
<a id="consent-link" href="#">See here for more informationnn.</a>
<a class="controls close" aria-hidden="true" data-dismiss="alert" href="#">
<i class="icon-cancel fontLoaded"></i>
</a>

JS code

    module.exports = View.extend({

   template: template,
   events: {
    'click #btnSubmitModal': 'saveConsent',
    'click #consent-link' : 'openConsent'
   },

   openConsent: function(event){
    event.preventDefault();
    console.log ("asaasagsgsgs");
    view = new modalView({model: this.model})
   },

1 个答案:

答案 0 :(得分:0)

来自文档:

  

模板 view.template([data])

     

虽然模板的模板不是直接提供的功能   Backbone,定义模板函数通常是一个很好的约定   对你的看法。通过这种方式,渲染视图时,您就拥有了   方便地访问实例数据。例如,使用Underscore   模板:

var LibraryView = Backbone.View.extend({
    template: _.template(...)
});

因此,template是一个自定义属性,可用于指向模板函数。定义这个是不够的,您必须通过将数据传递给模板函数来创建实际模板,并将生成的HTML附加到views元素。

类似的东西:

 module.exports = View.extend({
  initialize: function(){
    this.render();
  },
  template: Handlebars.compile(template), // where template is the handle bars template
  events: {
   'click #btnSubmitModal': 'saveConsent',
   'click #consent-link' : 'openConsent'
  },
  render: function(){
    this.$el.append(this.template(data)); //where data is the data you wish to pass to handle bars template function
  },
  openConsent: function(event){
    event.preventDefault();
    console.log ("asaasagsgsgs");
    view = new modalView({model: this.model})
  }
 });

事件处理程序的作用域是(委托给)视图的元素。将HTML附加到视图的元素后(如上例中的render方法所示),事件将开始工作。