Binding 主干3.js视图绑定

Binding 主干3.js视图绑定,binding,view,backbone.js,three.js,Binding,View,Backbone.js,Three.js,很抱歉问了一个很简单的noob问题 我有一个视图,它在Three.js渲染器中创建几何图形-该视图第一次成功渲染。但是,对渲染函数的后续调用失败,并出现未知的引用错误 我正在尝试使用Backboneio.js在视图中而不是模型中存储对渲染几何体的引用,因为模型在多个浏览器(实际上是服务器)之间共享 视图如下所示: StarSystem.hudContact = BackboneIO.View.extend({ el: '', model: '', initialize: functi

很抱歉问了一个很简单的noob问题

我有一个视图,它在Three.js渲染器中创建几何图形-该视图第一次成功渲染。但是,对渲染函数的后续调用失败,并出现未知的引用错误

我正在尝试使用Backboneio.js在视图中而不是模型中存储对渲染几何体的引用,因为模型在多个浏览器(实际上是服务器)之间共享

视图如下所示:

StarSystem.hudContact = BackboneIO.View.extend({
  el: '',
  model: '',
  initialize: function(options) {
    var material = new THREE.LineBasicMaterial({
      color: 0xFFFFFF,
    });

    var geometry = new THREE.Geometry();
    geometry.vertices.push(new THREE.Vector3(0, 0, 0));
    geometry.vertices.push(new THREE.Vector3(0, 0, ((camera[0].position.z - this.model.get('zPos')) / 10000)));

    var line = new THREE.Line(geometry, material);
    line.position.x = ((camera[0].position.x - this.model.get('xPos')) / 10000);
    line.position.y = ((camera[0].position.y - this.model.get('yPos')) / 10000);
    line.position.z = 0;
    line.Name = this.model.get('Name');

    this._hudLine = hudScene.add(line);
    this.model.bind('update', this.render, this);
  },
  render: function(){
  console.log(this._sceneLine.position.x);
    this._hudLine.position.x = ((camera[0].position.x - this.model.get('xPos')) / 10000);
    this._hudLine.position.y = ((camera[0].position.y - this.model.get('yPos')) / 10000);
    this._hudLine.position.z = 0;

  }
});
因此,正如可以看到的,我正试图在这里存储一个对行(line)的引用。_hudLine-这在第一次渲染时(在初始化调用期间)是已知的,但在之后(在渲染调用中)是未知的

对于如何在不依赖全局数组或在模型中存储信息的情况下处理此问题的任何指导,都将不胜感激


谢谢

我实际上不知道BackboneIO是什么,但在主干网中,您必须使用
.bindAll(此“渲染”)
绑定渲染函数,才能使类似于
的this.model.bind('update',this.render)
工作。

此问题已在以下方面得到解决:


非常感谢你的帮助

参考以下文章解决了这一问题:

但是,我认为根本问题在于原始模板,它将视图包装在一个自动执行函数中:

(function () {
  //view stuff
}).call(this);
而不是:

(function () {
  //view stuff
})();

noob问题-非常感谢您的帮助

真奇怪。一旦您在
initialize()。有没有可能其他地方的其他代码正在篡改这些数据,或者破坏这些数据?嘿,谢谢你,这至少证实了我从一开始就在做正确的事情!您好,感谢这一点-它实际上调用了渲染循环fine,我认为在:this.model.bind('update',this.render,this')中,第二次出现“this”可以缓解uu.bindAll需求-但是,我已经尝试了两种方法,但都没有效果。将继续播放。由于此链接包含在您的其他答案中,请删除此链接以帮助清理网站。