Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Backbone.js 取消后的主干渲染_Backbone.js - Fatal编程技术网

Backbone.js 取消后的主干渲染

Backbone.js 取消后的主干渲染,backbone.js,Backbone.js,我有以下主要观点。我有点怀疑。如果模型被删除,我会在取消后调用render(第一种方法),另一种方法是使用initialize函数,该函数在视图中呈现模型,以侦听事件更改。(第二种方法) 有人能告诉我一和二的区别吗。至于哪一个更好 第一种方法 var AppointView=Backbone.View.extend({ 模板:u.template(“>”+ '' + "x", 第二种方法 var AppointmentView = Backbone.View.extend({ templat

我有以下主要观点。我有点怀疑。如果模型被删除,我会在取消后调用render(第一种方法),另一种方法是使用initialize函数,该函数在视图中呈现模型,以侦听事件更改。(第二种方法)

有人能告诉我一和二的区别吗。至于哪一个更好

第一种方法 var AppointView=Backbone.View.extend({ 模板:u.template(“>”+ '' + "x",

第二种方法

var AppointmentView = Backbone.View.extend({
  template: _.template('<span class="<% if(cancelled) print("cancelled") %>">' +
                        '<%= title %></span>' +
                        '<a href="#">x</a>'),
  initialize: function(){
    this.model.on("change", this.render, this);
  },
  events:  { "click a": "cancel" },
  cancel: function(){
    this.model.cancel();
  },
  render: function(){
    this.$el.html(this.template(this.model.toJSON()));
  }
});
var AppointmentView=Backbone.View.extend({
模板:u.template(“”+
'' +
''),
初始化:函数(){
this.model.on(“change”,this.render,this);
},
事件:{“单击a”:“取消”},
取消:函数(){
这个.model.cancel();
},
render:function(){
this.el.html(this.template(this.model.toJSON());
}
});

我将定义一个自定义的
取消的
事件,从
取消
方法触发该事件,并在视图中绑定到该事件

var Appointment = Backbone.Model.extend({
  cancel: function() {
    //cancellation code...
    this.trigger('cancelled', this);
  }
});

var AppointmentView = Backbone.Model.extend({
  initialize: function() {
    this.listenTo(this.model, 'cancelled', this.render);
  }
});

这样,即使从视图本身以外的其他位置取消了模型,视图也会重新渲染,但您仍然可以获得特定的行为,或者仅在
取消时重新渲染,而不是每次更改时重新渲染。

取消方法对模型做了什么?因为您不能通过调用模型本身的方法来删除模型(没有意义),或者反过来问…你想实现什么?模型更改后的渲染还是从集合中删除模型后的渲染?@Drejc,
model#destroy
是一个通过调用模型上的方法从集合中删除模型的方法的示例。只需说明。因此,无论哪种方法,你都需要通知col通过直接或间接删除模型,选择模型不再存在。
var Appointment = Backbone.Model.extend({
  cancel: function() {
    //cancellation code...
    this.trigger('cancelled', this);
  }
});

var AppointmentView = Backbone.Model.extend({
  initialize: function() {
    this.listenTo(this.model, 'cancelled', this.render);
  }
});