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_Backbone Views_Backbone Events - Fatal编程技术网

Backbone.js 主干视图渲染方法默认参数

Backbone.js 主干视图渲染方法默认参数,backbone.js,backbone-views,backbone-events,Backbone.js,Backbone Views,Backbone Events,我有一个与模型关联的主干视图。视图正在侦听change方法,如果模型发生更改,它将调用render this.listenTo(this.model, 'change', this.render); 我遇到一个问题,我的主干视图的渲染方法被多次调用。我正在试着调试这个问题。为此,我在render方法中添加了console.log语句: render: function(data) { if(this.model){ console.log("Render Method:

我有一个与模型关联的主干视图。视图正在侦听change方法,如果模型发生更改,它将调用render

this.listenTo(this.model, 'change', this.render);
我遇到一个问题,我的主干视图的渲染方法被多次调用。我正在试着调试这个问题。为此,我在render方法中添加了console.log语句:

render: function(data) {
    if(this.model){
        console.log("Render Method:",data," For model:",this.model.cid);
    }
}
现在这个数据值有时会打印为未定义或类似于模型的内容。有人知道传递给模型更改侦听器的参数是什么吗

注意:我没有向render方法传递任何内容


主干文档没有提到这一点:

据我所知,渲染函数不应该有任何参数传递给它

  Event.Listen=Backbone.View.extend({
          model: 'something'
        initialize:function(){
           this.listenTo(this.model,'change',this.render);

      }
        render:function(){
          //is called when the listen to event is triggered
          //if(this.model) does not make a lot of sense?? Does it need to be 
             //true ornull
           //call another object
           new Event.DoSomething();

        }
   });

从主干站点“告诉对象侦听上的特定事件”到“其他”对象”

在视图外部看起来,还有其他要渲染的调用(除了事件侦听器)

如果尝试此方法(请听其他方法而不是渲染):

然后在下面的视图中声明渲染:

customMethod: function() {
    console.log(arguments, '<==== is there arguments?');
    if(this.model){
        console.log("Custom Render Method For model:",this.model.cid);
    }
}
customMethod:function(){

log(参数,如果绑定发生多次,则会多次调用事件回调,即

this.listenTo(this.model, 'change', this.render);
正在执行多次

如果多次触发
更改
,也会发生这种情况。例如,在for循环中设置模型的每个属性,而不是一次设置

任何回调都会接收一个事件作为参数。 就你而言

render: function(data) {
    if(this.model){
        console.log("Render Method:",data," For model:",this.model.cid);
    }
}
调用
view.render()
时,数据将被记录为未定义。
当由
更改
事件触发时,数据将成为事件对象

更改事件通过
模型
选项的散列

在主干中:

因此,在《as mu太短》一书中,他评论道:

更改(模型,选项)-当模型的属性更改时


但它确实以某种方式获得了参数,我只是想知道该参数是什么,以及它是否有助于我调试
“change”
事件处理程序如何获得两个参数:谢谢,这是我一直在寻找的。你问:“有人知道传递给render方法的默认参数是什么吗?”然后,您需要询问,传递给模型更改事件侦听器的参数是什么?渲染视图没有默认参数。对此我深表歉意,丹尼尔,编辑我的问题没有问题,谢谢!如果您将函数参数列表留空,有时控制台将不会显示参数。我建议添加
function(a,b,c,d,e,f){
添加一个长参数列表将确保显示所有参数。这有些过分,但每次都有效。@CoryDanielson你能举个例子吗?我个人从未遇到过这种情况,所以我很感兴趣。不,我只是注意到有时候控制台很奇怪,除非我给出了函数,否则不会显示参数虚拟参数。可能是由于旧版本的chrome或其他原因,我不确定。但这很烦人。
render: function(data) {
    if(this.model){
        console.log("Render Method:",data," For model:",this.model.cid);
    }
}
 this.trigger('change', this, options);