2016-09-06 24 views
0

Angular JSのui-dateを使用しています。 loop.Belowでレンダリングされる複数の日付が私のHTMLコードです。私のコントローラでAngular JS:データバインディングが日付で機能しない

<tr ng-repeat="(k,v) in :: vm.dateMap"> 
 
<th> 
 
<input ng-attr-id="{{ 'dateCmp-' + k}}" ui-date="vm.dateOptionMap[k]"> 
 
</th> 
 
</tr>

、dateOptionMapは値を下回る私は以下のものにマップ値を変更しています、ボタンのクリックで

  vm.dateOptionMap = {}; 
 
      vm.dateOptionMap['03/06/2014'] = { 
 
       changeYear: true, 
 
       changeMonth: true, 
 
       dateFormat: 'dd-mm-yy' 
 
      }; 
 
      vm.dateOptionMap['07/21/2016'] = { 
 
       changeYear: true, 
 
       changeMonth: true, 
 
       dateFormat: 'dd-mm-yy' 
 
      }; 
 
      vm.dateOptionMap['09/06/2017'] = { 
 
       changeYear: true, 
 
       changeMonth: true, 
 
       dateFormat: 'dd-mm-yy' 
 
      };

が含まれています。この変更は、UIに反映取得されていませんどのようにこれまで

 vm.dateOptionMap['03/06/2014'] = { 
 
        changeYear: false, 
 
        changeMonth: false, 
 
        dateFormat: 'dd-mm-yy' 
 
       };

。これで私を助けてもらえますか?

+0

あなたのコントローラでデータを初期化し終わったら、あなたのスコープを更新し、あなたの変更をUIに反映するために '$ scope。$ apply()'を使います。 – Pezhvak

+0

双方向バインディングを実現するには、ここで欠けているng-modelディレクティブを使用する必要があります –

答えて

0

この行ng-attr-id="{{ 'dateCmp-' + k}}"は、id属性に値をレンダリングするだけです。 ng-attr-idDOES NOT BINDの値です。

日付の値を<input>にバインドするには、ng-modelの属性に適切なjs変数を設定し、次に変数の値を動的に変更する必要があります。

関連する問題