当Ember迭代一组对象并将它们输出到一个页面时,比如边栏中的链接列表,Ember会为每个元素创建一个上下文。单击该项时,Ember将该元素作为上下文传递给方法。
如何随意创建该上下文的虚假版本?我本质上想重用一个当前从onclick事件接收上下文的方法。
答案 0 :(得分:0)
我不确定我是否理解这个问题,但会给它一个机会。我认为你想要完成的事情可以通过直接设置上下文来完成,并且可能应该忽略视图。
clientsArray
....
loadProjects: function(view){
this.set('currentClient', view.context);
},
_setProject: function(){
console.log('loading projects');
var context = this.get('currentClient');
PM.projectsArray.set('content', []);
PM.projectsArray.pushObjects(context.get('projects'));
}.observes('currentClient')
....
然后在你的'addProject'方法中,只需将'currentClient'(在clientArray中)设置为新的上下文(你的'project'对象)。观察者会选择它并照顾其余部分。能够观察变化的价值并相应地更新背景是其中的优势之一;它可以防止你需要做很多明确的工作。它旨在让您不必自己编写所有引导代码,框架完成工作。制作虚假视图只会使代码复杂化。