2

フィールドにフォーマッタを追加する単純なディレクティブを実装しようとしてい<input type="date">ます。ディレクティブは次のようになります。

myApp.directive("date-format", function (dateFilter) {
    return {
        restrict: "A",
        require: "ngModel",
        link: function (scope, element, attributes, ngModelController) {
            ngModelController.$formatters.push(function (modelValue) {
                return modelValue && new Date(modelValue);
            });
        }
    };
});

名前を に変更するまでは、かなりうまく機能していましたmb-date-format。JS フィドルを作成しました: http://jsfiddle.net/HB7LU/4458/aaabbb、などの名前で正常に動作するように見えますが、名前を、、 …cccに変更すると動作しなくなります。jjjzzz

4

2 に答える 2

0

あなたのフィドルを見ると、原因である可能性のあるいくつかの問題が見つかりました。

  1. 入力でタイプを使用してdateいます。組み込みのブラウザー日付セレクター API をオーバーライドするのは非常に難しいため、書式設定ソリューションは多くのブラウザーでは機能しません。

解決策パート 1: 入力タイプをテキストに変更する

<input type="text" ng-model="date" mb-date-format>

これは、独自のピッカーをロールする必要があることを意味することを理解していますが、カスタマイズが必要な場合は、それを行う必要があります. 依存関係を気にせず、要求が多すぎない場合、AngularUI はかなり拡張可能な datepicker を作成します。

  1. パーサー関数がヒットすることはありません。おそらく、ここでフォーマットするためのパーサーは必要ありません。

ソリューション パート 2: フォーマッタ関数で出力をフォーマットします。ここでフィドルを変更しました。これは、最初の問い合わせからのディレクティブ名も実装します。

于 2016-03-18T17:52:42.890 に答える