2012-09-02 9 views

答えて

41

あなたの質問が正しく分かっているかわかりませんが、既存のフィルタの機能を拡張したい場合は、既存のフィルタを飾る新しいフィルタを作成できます。例:

myApp.filter('customDate', function($filter) { 
    var standardDateFilterFn = $filter('date'); 
    return function(dateToFormat) { 
    return 'prefix ' + standardDateFilterFn(dateToFormat, 'yyyyMMddhhmmss'); 
    }; 
}); 

、その後は、テンプレートに:あなたは、単にこれは、既存の日付フィルタで行うことができます与えられたフォーマットに従って日付をフォーマットしたい場合は

{{now | customDate}} 

は、上記に述べました:ここでは

{{now | date:'yyyyMMddhhmmss'}} 

は、両方の技術を説明するための作業jsFiddleです:http://jsfiddle.net/pkozlowski_opensource/zVdJd/2/

フォーマットが指定されていない場合、AngularJSはこれが「中」フォーマットであると想定します(正確なフォーマットはロケールによって異なります)。詳細については、http://docs.angularjs.org/api/ng.filter:dateをご確認ください。

最後の発言:私はあなたの質問の「解析する」部分について少し混乱しています。事は、フィルタがオブジェクト(この場合は日付)を解析するために使用され、その逆ではなく文字列に変換されることです。日付を表す文字列(入力から)を解析した後であれば、NgModelController#$ parserを調べなければなりません(http://docs.angularjs.org/guide/formsの「カスタム検証」の部分をチェックしてください)。

+3

は、文書の日付フィルタによるISO 8601フォーマットされた文字列として日付を受け入れることができます。私の場合、入力フォーマットは 'yyyyMMddHHmmss'なので、標準フィルタ 'date'は解析できません。 – coxx

69

私はdecorator patternを実装することを好む、と実際の角度に非常に簡単です。..
我々はpkozlowski.opensource例@取るのであれば、あなたはそのようなこと行うことができます。その後、

myApp.config(['$provide', function($provide) { 
    $provide.decorator('dateFilter', ['$delegate', function($delegate) { 
    var srcFilter = $delegate; 

    var extendsFilter = function() { 
     var res = srcFilter.apply(this, arguments); 
     return arguments[2] ? res + arguments[2] : res; 
    } 

    return extendsFilter; 
    }]) 
}]) 

をとあなたの意見では、標準出力と拡張動作の両方を使用することができます。ここでは同じフィルタを持つ

<p>Standard output : {{ now | date:'yyyyMMddhhmmss' }}</p> 
<p>External behavior : {{ now | date:'yyyyMMddhhmmss': ' My suffix' }}</p> 

は、両方の技術を説明するための作業jsFiddleです: http://jsfiddle.net/ar8m/9dg0hLho/

+5

これは私が必要としていた100%正確です。もしできれば、私はあなたに3回投票します。 –

+1

これは正解です。しかし、フィルタには '' '' Filter'''を追加しなければならないことに注意してください。同じ名前のフィルタを再作成することは、通常は(常に)単一の関数であるため、私にとってはうまくいきます。何らかの方法で変更するつもりです。 –

+0

すばらしいアプローチ。 q: 'srcFilter.apply(...)'の最初のparamは 'this'ですが、最初のparamが' null'であるという例を見ました。それは何の目的ですか? –

関連する問題