既存の「標準」フィルタ(date
,、lowercase
など)を拡張することはできますか? 私の場合は、YYYYMMDDhhmmss形式の日付を解析する必要がありますので、自分で作成する代わりにdate
フィルタを拡張(またはオーバーライド)したいと思います。angularjsの既存のフィルタを拡張または上書きする方法はありますか?
答えて
あなたの質問が正しく分かっているかわかりませんが、既存のフィルタの機能を拡張したい場合は、既存のフィルタを飾る新しいフィルタを作成できます。例:
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の「カスタム検証」の部分をチェックしてください)。
私は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/
これは私が必要としていた100%正確です。もしできれば、私はあなたに3回投票します。 –
これは正解です。しかし、フィルタには '' '' Filter'''を追加しなければならないことに注意してください。同じ名前のフィルタを再作成することは、通常は(常に)単一の関数であるため、私にとってはうまくいきます。何らかの方法で変更するつもりです。 –
すばらしいアプローチ。 q: 'srcFilter.apply(...)'の最初のparamは 'this'ですが、最初のparamが' null'であるという例を見ました。それは何の目的ですか? –
- 1. ブロブストアの既存のBlobを上書きする方法はありますか
- 2. 既存のEclipseプラグイン拡張を上書きする
- 3. 既存の文書を異なるファイルとメタデータで上書きする方法はありますか?
- 4. これより少ないコードで既存のインターフェイス実装を拡張する方法はありますか?
- 5. Rubyのモジュールから既存のインスタンスメソッドを上書きする方法はありますか?
- 6. "ostream"を使ってstd :: stringの既存のインスタンスを上書きする方法はありますか?
- 7. 既存のSplitContainerを新規作成または拡張する
- 8. Typescript:既存の識別子を使ってLib.d.tsを上書き/拡張する
- 9. Magento 2拡張ヘルパーファイルを上書きする方法は?
- 10. 拡張メソッドを上書きする方法は?
- 11. Gradle Copy Task:既存のファイルを上書きする方法は?
- 12. GNOMEシェル拡張のユニットテストを書く方法はありますか
- 13. 独自のHttpExceptionを上書き、拡張、またはロールオーバーしますか?
- 14. pg_restoreは既存のテーブルを上書きしますか?
- 15. Windows上にC++ FireFox 3プラグイン(拡張子ではありません)を書き込む方法は?
- 16. 既存のカラー化ツールまたは言語をVSコードで拡張することはできますか
- 17. モデルのbefore_validationフィルタでdatetime_selectを正しい時間で上書きする方法はありますか?
- 18. Javaラッパークラスのラップメンバーのメソッドを「拡張する」、またはショートカットを作成する方法はありますか?
- 19. updateChildrenはAndroid Firebaseの既存のデータを上書きします
- 20. C - 動的割り当ては既存のデータを上書きしますか?
- 21. Plone DexterityのINameFromTitleの動作を拡張する方法はありますか?
- 22. 私のウェブサイトの「CSSテーマ」を上書きする方法はありますか?
- 23. 既存の拡張メソッドをオーバーライドする方法
- 24. Djangoは既存のモデルを上書きしています
- 25. .vimrcは既存の設定を上書きします
- 26. アンダースコアの拡張機能は再帰的に拡張されますか(またはオプションがありますか)?
- 27. Chrome拡張機能ポップアップのマイクアクセスをリクエストする方法はありますか?
- 28. Inkscapeの拡張機能をリフレッシュする方法はありますか
- 29. 既存のインターフェイスを拡張する
- 30. 既存のantパスタグを拡張する
は、文書の日付フィルタによるISO 8601フォーマットされた文字列として日付を受け入れることができます。私の場合、入力フォーマットは 'yyyyMMddHHmmss'なので、標準フィルタ 'date'は解析できません。 – coxx