自定义BackboneJS事件(增量和减量)不起作用

问题描述 投票:0回答:1

我有一个计数器(要使用产品数量),该计数器要使用Beta2定制事件进行操作。如果单击添加产品,则产品号应增加;如果单击删除产品,则产品号应减少一。这是一个working demo,问题是,当我单击按钮时计数器的值未得到更新。这是代码片段

var Counter = Backbone.Model.extend({
 defaults: { value: 10 },

 // model methods
 increment: function() { 
   this.set({value: this.get('value')+1});
 },
 decrement: function() {
   this.set({value: this.get('value')-1});
 }
});
var cnt = new Counter();
// ------- view ------- 
var AppView = Backbone.View.extend({
 el:'#no_of_products',
 render: function() {
   this.$el.html(this.model.get('value'));
 },

 events:{
   'click .add-one': 'addOne',
   'click .minus-one': 'minusOne'
 },
 initialize: function() {
   this.model.on('change', this.render, this);
   this.render();
 },

 // view methods
 addOne: function() {
   this.model.increment();
 },
 minusOne: function() {
   this.model.decrement();
 }
});
var view = new AppView({ model: cnt });

并且html代码是:

<div id="product_details">
<h1>No of Products:<span id="no_of_products">0</span></h1>
<table>
  <tr>
    <td>
      Add Product
    </td>
    <td>
     : <button class="add-one">+1</button>
    </td>
  </tr>
  <tr>
    <td>
      Remove Product
    </td>
    <td>
      : <button class="minus-one">- 1</button>
    </td>
  </tr>
</div>
javascript jquery backbone.js underscore.js
1个回答
0
投票

这是一个有效的示例:https://codepen.io/tilwinjoy/pen/OJPyNbR?page=1&

几乎没有问题:

  1. 您要绑定事件的元素必须在视图[[inside中。在您的情况下,视图元素只是<span>,所有内容都在外面。
  2. [主干网没有双向绑定(尽管有些扩展可以带来这种功能),所以在更新模型之后,您必须自己重新渲染视图
© www.soinside.com 2019 - 2024. All rights reserved.