2016-11-02 7 views
0

私はこのようになります角度ディレクティブを持っている:Angularディレクティブと工場のコードを組み合わせることはできますか?

.directive('datefilter', function (dateFilter) { 
    return { 
     require: 'ngModel', 

     link: function (scope, element, attrs, ngModelController) { 
      ngModelController.$parsers.push(function (data) { 
       //convert data from view format to model format 
       return new Date(data); //converted 
      }); 

      ngModelController.$formatters.push(function (data) { 
       //convert data from model format to view format 
       return new Date(data); //converted 
      }); 
     } 
    } 
}) 

私は今、この

<input type="text" ng-model="someModelName" datefilter uib-datepicker-popup="{{format}}"> 

のようにテキストフィールドに

を使用しています。このディレクティブ私はこの角度フィルタがあります。

.filter('datefilterfilter', function (dateFilter) { 
     return function (value, format) { 
      return dateFilter(new Date(value), format); 
     }; 
    }); 

このフィルタ私はこのような使用しています:それはどんなng-modelを持っていないため

<b> {{someModelNAme | datefilterfilter: format}} </b> 

最終的に指示し、フィルタと同じ仕事をしているが、このディレクティブの両方がng-modelが必要なので、私は<b>タグにそれを適用することはできません。両方の要素(text filed<b>タグ)で動作するdirectivefilterを組み合わせる方法はありますか?

+0

あなたがテキストボックスにテキストを太字**になりたいの? – Aravind

+0

いいえ、 'directive'と' filter'は 'new Date()'を返します。コードを一度書くだけです。 –

+0

あなたのディレクティブが 'new Date()'を返すときに、フィルタを持つ目的は何ですか? – Aravind

答えて

1

あなたは$filterサービス注入することによって、あなたの指示で任意のフィルタを使用することができます**

.directive('datefilter', ["$filter", function ($filter) { 
    return { 
     require: 'ngModel', 

     link: function (scope, element, attrs, ngModelController) { 
      ngModelController.$parsers.push(function (data) { 
       //convert data from view format to model format 
       return $filter("datefilterfilter")(data); //converted 
      }); 

      ngModelController.$formatters.push(function (data) { 
       //convert data from model format to view format 
       return $filter("datefilterfilter")(data); //converted 
      }); 
     } 
    } 
}]) 
+0

アプローチは正しいですが、 '$ parsers'と' $ formters'に対して同じ操作をするのは間違っています... – Icycool

+0

もちろん、1つの関数で抽出することも、両方で異なることもできますが、OPの問題ではありません。 – devqon

関連する問題