gpt4 book ai didi

javascript - Backbone/javascript - 被 'this' 关键字混淆

转载 作者:行者123 更新时间:2023-12-02 18:42:11 25 4
gpt4 key购买 nike

在以下主干脚本中,我尝试更改 View 单击事件中的集合。

var StudentView = Backbone.View.extend({

initialize: function() {
console.log("create student items view");
this.collection.bind('add',this.render,this);
this.collection.bind('remove',this.render,this);
},
render : function(){


},
events :{
"click ":"select_students"
},
select_students: function(){
this.collection.reset([]);
_.each(students.models, function(m) {
if(m.get('name')=="Daniel"){
this.collection.add(m);
}
});
}

});

var students_view = new StudentView({el:$("#student_table"),collection:selected_students});

我收到此错误 enter image description here

我应该如何在代码中调用“this.collection”?

最佳答案

您应该将 select_students 更改为

select_students: function(){
var self = this;
this.collection.reset([]);
_.each(students.models, function(m) {
if(m.get('name')=="Daniel"){
self.collection.add(m);
}
});
}

问题在于,在 JavaScript 中,this 上下文在内部函数中丢失(例如传递给 _.each 的函数),因此一般模式是保存外部引用 (self),然后在内部函数中使用它。

关于javascript - Backbone/javascript - 被 'this' 关键字混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16741584/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com