2015-06-09 3 views
1

Мне интересно, как лучше всего контролировать поведение компонента.Выполнение функций на компоненте emberjs

В моем случае у меня есть компонент {{stop-watch}}.

Я хочу, чтобы start, stop и reset компонент по маршрутам, используя {{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

OK это имеет смысл. Поэтому я должен быть привязан к чему-то вроде этого {{stop-watch controls = stopWatchControls}} '. Где бы вы поместили модель «контроль-контроль-контроль»? В папке моделей? Это как-то связано с компонентом. – jax

+0

Подумайте о модели как о самом секундомере. Вы можете бросить модель вокруг, иметь несколько экземпляров и т. Д. И компонент - это просто его интерфейс модели. У вас может быть несколько интерфейсов, например. г. полный и компактный. –

+0

Вся логика и поведение должны быть в модели, компонент должен иметь только логику, связанную с визуализацией (например, позицию аналоговой часовой стрелки), а не счет времени. И да, вы можете поместить модель в папку моделей. –

Смежные вопросы