2015-03-20 2 views
3

я иметь такую ​​форму:Как превратить мою форму в компонент ember?

<form {{action 'resetPassword' on="submit"}}> 
    {{input type="password" value=newPassword placeholder="reset password"}}<br> 
    {{#if newPassword}} 
    {{input type="password" value=confirmPassword placeholder="confirm password"}} 
    {{#if passwordOK}} 
     <button>Reset</button> 
    {{/if}} 
    {{/if}} 
</form> 

Он основан на действии ResetPassword будучи доступны, а также функции passwordOK которая проверяет, что пароль был введен и подтверждения матчей.

Это все разрушает, но я думаю, что мне нужно использовать эту форму несколько раз в моем приложении. Поэтому я предполагаю, что я должен превратить его в компонент.

Как я могу превратить эту форму в компонент многократного использования?

Мне интересно, как взять этот кусок функциональности и сделать его доступным во всем приложении. Как мне упаковать и повторно использовать его?

+0

Вы спрашиваете, где положить код js для компонента? –

+0

Мне интересно, как взять этот кусок функциональности и сделать его доступным во всем приложении. Как мне упаковать и повторно использовать его. –

ответ

5

Возможно поздно для этой партии, но это может помочь кому-то еще.

Руководство-Минуты Создание уголек форма Компонент С Ember CLI

  1. Создайте новый проект - "уголек новой быструю-форму"
  2. Перейдите в этот каталог и введите - «уголек г компонентный компонент-компонент "
  3. В каталоге проектов перейдите в приложение> components> password-component.js. Там, замените код следующим образом:

    import Ember from 'ember'; 
    
    export default Ember.Component.extend({ 
        passwordOK: function(){ 
        return this.get('newPassword')===this.get('confirmPassword'); 
        }.property('newPassword','confirmPassword'), 
    
    actions: { 
    resetPassword: function() { 
        alert(this.get('newPassword')); 
        }  
        } 
    }); 
    
  4. Перейти к приложению> шаблоны> Компоненты> паролем компонент. Там, замените {{выход}} с этим:

    <form {{action 'resetPassword' on="submit"}}> 
        {{input type="password" value=newPassword placeholder="reset password"}}<br> 
        {{#if newPassword}} 
         {{input type="password" value=confirmPassword placeholder="confirm password"}} 
         {{#if passwordOK}} 
          {{input type="submit" value="submit"}} 
         {{else}} 
         passwords don't match 
         {{/if}}  
        {{/if}} 
    </form> 
    
  5. В приложение> Шаблоны> application.hbs, добавить компонент, который вы только что создали, просто добавив следующее: «{{пароль-компонент}} "

  6. Построить свой проект (" уголек s ")

  7. Ваш компонент должен быть виден. Добавление содержимого в поле ввода и нажатие на submit должно содержать содержимое того, что вы только что ввели.

+0

Обычно я это делаю. Интересно, есть ли в компоненте 'tagName: 'form'', поскольку это корневой элемент - тогда как бы вы сохраняли действия в тактике - насколько они прикреплены к js вместо hbs? – sheriffderek

-1

Я не уверен, что это то, что вы ищете. В основном ваша форма компонент объявить ниже, и вы можете получить доступ из любой точки мира, просто позвонив идентификатор компонента {{знак-форма}}

<script type="text/x-handlebars" id="form"> 
    {{signup-form}} 
</script> 


<script type="text/x-handlebars" id="components/signup-form"> 
    <form {{action 'resetPassword' on="submit"}}> 
     {{input type="password" value=newPassword placeholder="reset password"}}<br> 
     {{#if newPassword}} 
     {{input type="password" value=confirmPassword placeholder="confirm password"}} 
     {{#if passwordOK}} 
      <button>Reset</button> 
     {{/if}} 
     {{/if}} 
    </form> 
</script> 
+0

ОК, так что это шаблон руля - вы предлагаете мне не нужен компонент? Это все еще работает с действием и функцией passwordOK? Нужно ли им просто быть доступным везде, где я использую шаблон? –

+0

Этот компонент доступен только для любого вида в определенном файле. Если вы хотите получить доступ к этому компоненту из любого места приложения, вам необходимо создать глобальный компонент. Любые действия, происходящие внутри компонента, будут работать так же, как и вне компонента. –

+0

Ручки упрощают работу, я определенно рекомендую проверить этот учебник http: //code.tutsplus.com/tutorials/an-introduction-to-handlebars - net-27761 –

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