0

在父组件中,我有以下内容:

.
.
.
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。但是代码不会等待Ember.run.later父级中的最后一次迭代运行,然后再执行从子级启动的 otherFunc 调用。

我有其他代码,我已经缩写,依赖于在 Ember.run.later 的最后一次迭代之后运行的 otherFunc。

如何从子组件调用父组件函数并确保 Ember.run.later 在调用的子函数执行之前完成?

4

1 回答 1

0

对于遇到此问题的任何人,这就是我所做的。

我在父组件上做delay了一个属性,并在父组件中更新otherFunc如下:

otherFunc: function(somePara){
  var currentDelay = this.get('delay');
  Ember.run.later(_this, function() {
    .
    .
    .
    .
  }, currentDelay);
}

这将在最后一次延迟完成后调用新指令recurringFunc

于 2016-06-14T08:08:13.187 回答