この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

ステップ 2: ユーザ入力用のコンポーネントを作成する

コンポーネントは、アプリケーションのビルディングブロックです。コンポーネントを Apex コントローラクラスに接続して、データを読み込むことができます。このステップで作成するコンポーネントにより、経費の金額や日付など、経費に関するユーザ入力を受け入れるフォームが提供されます。
  1. [ファイル] | [新規] | [Lightning コンポーネント] をクリックします。
  2. [New Lightning Bundle (新規 Lightning バンドル)] ポップアップウィンドウの [Name (名前)] 項目に、「form」 (フォーム) と入力します。これにより、form.cmp という新しいコンポーネントが作成されます。
  3. ソースコードエディタで、次のコードを入力します。

    次のコードは、経費を作成するためにユーザ入力を受け入れる入力フォームを作成します。これは、スタンドアロンアプリケーションと Salesforce1 の両方で動作します。Salesforce1 に固有の Lightning アプリケーションでは、force:createRecord を使用してレコードの作成ページを開くことができます。

    メモ

    1swfobject.registerObject("clippy.codeblock-0", "9");
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17<aura:component>
    18  <ltng:require styles="/resource/bootstrap"/>
    19  <aura:attribute name="expenses" type="Expense__c[]"/>
    20  <aura:attribute name="newExpense" type="Expense__c"
    21             default="{ 'sobjectType': 'Expense__c',
    22                         'Name': '',
    23                         'Amount__c': 0,
    24                         'Client__c': '', 
    25                         'Date__c': '',
    26                         'Reimbursed__c': false
    27                       }"/>
    28  <!-- Attributes for Expense Counters -->
    29  <aura:attribute name="total" type="Double" default="0.00" />
    30  <aura:attribute name="exp" type="Double" default="0" />
    31
    32  <!-- Input Form using components -->
    33  <div class="bootstrap-sf1">	
    34        <div class="container">
    35            <form>
    36                <fieldset>
    37                    <ui:inputText aura:id="expname" label="Expense Name"
    38                                  class="form-control" 
    39                                  value="{!v.newExpense.Name}"
    40                                  placeholder="My Expense" required="true"/>
    41                    <ui:inputNumber aura:id="amount" label="Amount" 
    42                                    class="form-control"
    43                                    value="{!v.newExpense.Amount__c}"
    44                                    placeholder="20.80" required="true"/>
    45                    <ui:inputText aura:id="client" label="Client" 
    46                                  class="form-control"
    47                                  value="{!v.newExpense.Client__c}"
    48                                  placeholder="ABC Co."/>
    49                    <ui:inputDateTime aura:id="expdate" label="Expense Date" 
    50                                      class="form-control"
    51                                      value="{!v.newExpense.Date__c}"
    52                                      displayDatePicker="true"/>
    53                    <ui:inputCheckbox aura:id="reimbursed" label="Reimbursed?"
    54                                      class="checkbox"
    55                                      value="{!v.newExpense.Reimbursed__c}"/>
    56                    <ui:button label="Submit" press="{!c.createExpense}"/>
    57                </fieldset>
    58            </form>
    59   </div><!-- ./container-->
    60
    61  <!-- Expense Counters -->
    62  <div class="container">
    63          <div class="row">
    64              <div class="col-sm-6">
    65                <!-- Make the counter red if total amount is more than 100 -->
    66                <div class="{!v.total >= 100 ? 'alert alert-danger' : 'alert alert-info'}">
    67                  <h3>Total Expenses</h3>$<ui:outputNumber value="{!v.total}" format=".00"/>
    68                </div>
    69              </div>
    70              <div class="col-sm-6">
    71                  <div class="alert alert-info">
    72                      <h3>No. of Expenses</h3><ui:outputNumber value="{!v.exp}"/>
    73                  </div>
    74               </div>
    75          </div>
    76  </div>
    77          <!-- Display expense records -->
    78          <div class="container">
    79              <div id="list" class="row">
    80                 <aura:iteration items="{!v.expenses}" var="expense">
    81                     <!-- If you’re using a namespace, use the format {!expense.myNamespace__myField__c} instead. -->
    82	              <p>{!expense.Name}, {!expense.Client__c}, {!expense.Amount__c}, {!expense.Date__c}, {!expense.Reimbursed__c}</p>                     
    83                </aura:iteration>
    84              </div>
    85          </div> 
    86    </div><!--./bootstrap-sf1-->
    87</aura:component>

    コンポーネント��は、豊富な属性セットが提供され、ブラウザイベントがサポートされます。属性は型付けされた項目で、コンポーネントの特定のインスタンスに設定されており、式の構文を使用して参照できます。すべての aura:attribute タグには、名前とデータ型の値があります。詳細は、「サポートされる aura:attribute の型」 を参照してください。

    この属性と式は、アプリケーションを作成していく過程で明確になります。{!v.exp} は経費レコード数を評価し、{!v.total} は合計金額を評価します。{!c.createExpense} は、[実行] ボタンをクリックしたときに実行されるクライアント側のコントローラアクションを表します。このアクションにより、新しい経費が作成されます。ui:buttonpress イベントでは、ボタンをクリックしたときのアクションを結び付けられます。

    {!v.expenses} は、コンポーネントを経費オブジェクトに接続します。var="expense" は、反復内の各項目に使用する変数の名前を示します。{!expense.Client__c} は、経費オブジェクトのクライアント項目にバインドするデータを表します。

    Expense__c 型の newExpense のデフォルト値は、sobjectType を含め正しい項目で初期化する必要があります。デフォルト値を初期化することで、経費が正しい形式で保存されます。

    メモ

  4. サイドバーで [STYLE] をクリックして、form.css という名前の新しいリソースを���成します。次の CSS ルールセットを入力します。
    1swfobject.registerObject("clippy.codeblock-1", "9");
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17.THIS .uiInputDateTime+.datePicker-openIcon {
    18    position: absolute;
    19    left: 90%;
    20    top: 30px;
    21}
    22
    23.THIS .uiInputDefaultError li {
    24  list-style: none;
    25}

    THIS は、CSS に名前空間を追加して別のコンポーネントとのスタイルの競合を回避するためのキーワードです。.uiInputDefaultError セレクタは、「ステップ 5: 新しい経費の入力を有効化する」で項目検証を追加するときのデフォルトのエラーコンポーネントのスタイルを設定します。

    メモ

  5. アプリケーションにコンポーネントを追加します。expenseTracker.app で、マークアップに新しいコンポーネントを追加します。

    次の手順は、<c:form /> をマークアップに追加します。名前空間を使用している場合は、<myNamespace:form /> を代わりに使用できます。

    1swfobject.registerObject("clippy.codeblock-2", "9");
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17<aura:application>
    18    <ltng:require styles="/resource/bootstrap"/>
    19    <aura:handler name="init" value="{!this}" action="{!c.doInit}"/>
    20    
    21    <div class="bootstrap-sf1">
    22        <div class="navbar navbar-inverse">
    23	        <div class="navbar-header">
    24		     <a href="#" class="navbar-brand">My Expenses</a>
    25        	</div>
    26         </div>
    27        <div class="container">
    28            <c:form />
    29        </div>
    30    </div>
    31</aura:application>
  6. 変更を保存し、サイドバーの [プレビューを更新] をクリックしてアプリケーションをプレビューします。または、ブラウザを再読み込みします。

    このステップでは、Apex コントローラクラスをまだ作成していないため、作成したコンポーネントにデータは表示されません。

    メモ

お疲れ様です。入力フォームを提供し、経費を表示するコンポーネントが作成されました。

中級編

Lightning コンポーネントフレームワークには、auraui などの異なる名前空間に整理され、すぐに使用できる一連のコンポーネントが含まれています。ui 名前空間には、UI フレームワークの一般的なコンポーネントがあります。たとえば、ui:inputText はテキスト項目に対応します。aura 名前空間には、このステップで使用する aura:iteration など、中核となるフレームワーク機能のための多くのコンポーネントが含まれています。