如何确保子组件在 Ember.run.later 完成后调用父函数 Ember
How to ensure a child component calls parent function after Ember.run.later is completed in Ember
在父组件中,我有以下内容:
.
.
.
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 运行ning
如何从子组件调用父组件函数并确保Ember.run.later在调用的子函数执行前完成?
对于遇到此问题的任何人,这就是我所做的。
我在父组件上做了delay
一个属性,在父组件中更新了otherFunc
如下:
otherFunc: function(somePara){
var currentDelay = this.get('delay');
Ember.run.later(_this, function() {
.
.
.
.
}, currentDelay);
}
这将在recurringFunc
的最后一个延迟结束后调用新的指令。
在父组件中,我有以下内容:
.
.
.
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 运行ning如何从子组件调用父组件函数并确保Ember.run.later在调用的子函数执行前完成?
对于遇到此问题的任何人,这就是我所做的。
我在父组件上做了delay
一个属性,在父组件中更新了otherFunc
如下:
otherFunc: function(somePara){
var currentDelay = this.get('delay');
Ember.run.later(_this, function() {
.
.
.
.
}, currentDelay);
}
这将在recurringFunc
的最后一个延迟结束后调用新的指令。