1

input[date]コントローラーでコントロールに初期値を割り当てようとしています。

AngularJSinput[date]のドキュメントから、

モデルは常に Date オブジェクトである必要があります。そうでない場合、Angular はエラーをスローします。

それらは、Plunker で動作input[date]するコントローラー (簡略化されたバージョンを貼り付けた) を初期化する方法の実例を提供します。

<script>
   angular.module('dateInputExample', [])
     .controller('DateController', ['$scope', function($scope) {
       $scope.value = new Date(2013, 9, 22);
     }]);
</script>
<form name="myForm" ng-controller="DateController as dateCtrl">
   <input type="date" id="exampleInput" name="input" ng-model="value" />
</form>

アプリケーションで同じことを行うと、常に次のメッセージが表示されます。

The specified value 'Sun Nov 09 2014 00:00:00 GMT+0100 (CET)' does not conform to the required format, 'yyyy-MM-dd'

コントロールは初期化されません。有効な日付オブジェクトではなく、ISO 形式の文字列を期待しているようです。

angularJSを使用した HTML5 日付入力フィールドのデフォルト値の設定では、別の方法が提案されています。

<input type="date" ng-model="date" value="{{date}}">
...
$scope.date = $filter("date")(Date.now(), 'yyyy-MM-dd');

「yyy-MM-dd」文字列をモデルに割り当てるだけです。ドキュメントによると、文字列は有効な Date オブジェクトではないため、これはエラーをスローするはずですが、この 2 番目の方法は私には機能しますが、面白いことに、この方法を使用するように変更された元のPlunkerで使用すると機能しません。

  1. input[dates]コントローラーの値を期待通りに設定できないのは何が原因でしょうか?
  2. alt メソッドが私 (および他の人) で機能しているのに、提供されている簡単なデモで機能しないのはなぜですか?

入力[タイプ]が作成され、初期値が割り当てられているコードからの抜粋を次に示します。

index.html

<input type="date" name="input", ng-model="value" />

コントローラ

.controller("UploadsCtrl",["$scope","$filter", function($scope, $filter) {
    // $scope.value = new Date(2013, 22, 9); // Not working
    $scope.value = "2015-10-10"; // Working!!!!
    ...
4

1 に答える 1