在父组件中,我有以下内容:
.
.
.
recurringFunc: function(delay, index){
.
.
.
if (someFlag){
Ember.run.later(_this, function() {
_this.send('otherFunc',{index: index});
_this.send('recurringFunc', delay, ++index);
}, delay);
}
},
otherFunc: function(somePara){
.
.
.
}
在父模板中,我有以下内容:
.
.
.
{{template-name someFlag=someFlag}}
.
.
.
然后在儿童组件中我有以下内容:
input: function(){
this.set('someFlag', false);
this.sendAction('otherFunc', {index: someVal});
}
如果从子组件触发的动作成功,则更改父组件中的someFlag。但是,在执行从子进程启动的otherFunc调用之前,代码不会等待父进程中的最后Ember.run.later
次迭代运行。
我有其他缩写的代码依赖于在Ember.run.later的最后一次迭代后运行的otherFunc。
如何从子组件调用父组件函数并确保在执行子函数调用之前完成Ember.run.later?
答案 0 :(得分:0)
对于遇到此问题的任何人来说,这就是我所做的。
我在父组件上创建了delay
属性,并在父组件中更新了otherFunc
,如下所示:
otherFunc: function(somePara){
var currentDelay = this.get('delay');
Ember.run.later(_this, function() {
.
.
.
.
}, currentDelay);
}
这将在recurringFunc
完成最后一次延迟后调用新指令。