在emberjs组件

时间:2015-06-09 10:24:29

标签: ember.js

我想知道控制组件行为的最佳方法是什么。

在我的情况下,我有一个{{stop-watch}}组件。

我希望startstopreset组件通过其模板中使用{{stop-watch}}的路线。启动和重置功能应该允许我以某种方式传递运行的秒数。

当组件只支持绑定而不是执行行为的能力时,如何才能做到这一点?

这是我能想到的唯一方法。在这种情况下; isStarted,isStopped和isReset将是布尔变量,我会切换它们来控制组件。

{{stop-watch start=isStarted stop=isStopped reset=isReset timeout=timoutSeconds}}

为控制器中的每个属性绑定都这样切换

    this.set('isStarted', !this.get('isStarted'));

对组件中的每个属性都这样观察

startUpdated : function() {
    //start the timer
}.property('start')

在我看来,上述解决方案非常不优雅且冗长,必须有更好的方法来实现这一目标。

此方案的最佳做法是什么?

1 个答案:

答案 0 :(得分:1)

你应该拥有一个拥有控制状态的状态和方法的模型。

您在路线中设置了模型的实例,然后您就可以在控制器和秒表组件中控制它。

组件将根据模型的属性自动更新其外观,并且能够通过组件上的操作调用模型上的方法。