Hatena::ブログ(Diary)

Kazzzの日記 このページをアンテナに追加 RSSフィード

2013-07-27

[]定数ファクトリ

これでそれっぽくはなったのだが、定数の種類が増えていくにつれてコントローラのパラメタがうるさくなることが予想される。
function HogeControoler($scope, Category, Constant2, Constant3, Constant4....) { 
他に良い方法いかなぁ。

現状は以下のように、定数を持つオブジェクトサービス中のファクトリ一つにまとめて使っている。

  • Services.js
services.factory("Const", function() {
    return {
        PaymentType : {
            "fixed" : 0       
          , "benefited" : 1 
        }
        ,
        Category : {
            "endorse" : 0   
            , "dispatched" : 1
            , "contract" : 2
            , "others"  : 4
        }
        ,
        Status :  {
            "pristine" : 0 
            , "prepared" : 1
            , "published" : 2
        }
    }
});

実際に使う場合にはController等で明示的に"Const"をインジェクションして使う。

  • Controllers.js
function NavbarController($scope, Data, Const) {
    $scope.Status = Const.Status;
    $scope.isPristine = Data && Data.status == Const.Status.pristine;
    $scope.isPrepared = Data && Data.status == Const.Status.prepared;
    $scope.isPublished = Data && Data.status == Const.Status.published;
    〜
}

これで種類が増えてもインジェクションするパラメタは増えずに済む。
参照するのにピリオドが一つ増えるの嫌だけど、これはどうしようもないな。

Norikaz IshiiNorikaz Ishii 2014/12/03 16:14 単純に、 .value('constValue', {...}) でいいのかも。
いやまあ。やってることは一緒なんですが。それいっちゃえば全部シンタックスシュガーだろってことで。

トラックバック - http://d.hatena.ne.jp/Kazzz/20130727/p1