我正在将一个ThreeJS渲染的应用程序移植到Ember中,一切都没有问题。
原始的js有以下功能:
function animate(){
requestAnimationFrame(animate);
render();
}
Ember方法非常相似:
....
animate: function() {
var view = this;
requestAnimationFrame(view.animate);
view.render();
},
....
我遇到的问题是在Emberjs视图中,第一次运行在第二次运行时正确映射到render方法,var view = this
绑定到窗口对象,而不是Ember视图对象,所以动画方法不会运行。
有没有办法直接映射到Ember Object方法而不依赖于this
答案 0 :(得分:0)
你在这里比较两个不同的东西,一个分配给散列上的属性的函数到一个作用于其父类的函数。
分配给属性的功能只能使用instance.property
。
作用于其父级的函数可在其父级范围内的任何位置使用。
答案 1 :(得分:0)
animate: function(context) {
window.requestAnimationFrame(function(){context.animate(context)});
context.render();
},
并且在第一次调用.animate()时,您应该传递您感兴趣的上下文参数