2016-10-16 7 views
0

現在のロケールに基づいて数値をフォーマットする簡単なフィルタを作成しました。AngularJS:テンプレートにフィルタを適用する

angular.module('myApp').filter('doubleFilter', DoubleFilter); 

function DoubleFilter($translate) { 
    return function(val, decimalPlaces) { 
     if (val && (typeof val === 'number')) { 
      val = val.toFixed(decimalPlaces); 
      if ($translate.use() === 'de_DE') { 
       val = val.replace('.', ','); 
      } 
     } 
     return val; 
    } 

}; 

私はこのように私のテンプレートでこのフィルタを呼び出し、それが正常に動作します:

{{dog.weight | doubleFilter : 2}} 

しかし、私は$のtranslate.use(「en_USのに」)内の数値の形式を使用して言語を変更したとき私のテンプレートは更新されません。明らかに私はここで何かを逃している。

言語が変更されたときにビューを更新するにはどうすればよいですか?

答えて

1

私はあなたのディレクティブは、例えば、「ローカル変更の通知」をリッスンするために必要だと思います:あなたのフィルタステートフルを作る

scope.$on('$localeChangeSuccess', function() { 
      // code to execute the filter 
       }); 
+0

こんにちはTusahr(https://docs.angularjs.org/guide/filterを参照)を助けるかもしれません。私は今、イベントに耳を傾けることができますが、あなたは少し "フィルターの実行方法"を詳しく教えてください。 – Paul

+0

@Paul、スコープを追加する$ digest() – Tushar

0

は、回答に感謝を

関連する問題