2016-05-03 13 views
1

申し訳ありませんが、私はDirectiveに向かってAngularJS定数値を渡そうとしています。私は後で開発するときに変更できるいくつかの一定の値を持つことができるようにこれをやっています。以下のように属性内のAngularJS渡し定数

定数が定義されています。

TLKApp.constant("NOBILITY", 
{ 
    "Soldier": 0, 
    "Knight": 1, 
    "Duke": 2 
}); 
TLKApp.constant("NOBILITY_LEVEL_SOLDIER", 0); 
TLKApp.constant("NOBILITY_LEVEL_KNIGHT", 1); 
TLKApp.constant("NOBILITY_LEVEL_DUKE", 2); 

私はどちらの場合は仕事したかったので、これは二重のですが、どれも行いません。

ディレクティブ:

TLKApp.directive("foldOutMenuDirective", [ '$rootScope', '$parse', function($rootScope, $parse) { 
return { 
    scope: { 
     title: '@', 
     items: '=', 
     nobility: '=?' 
    }, 
    templateUrl: 'HTML/Directives/FoldOutMenu.html', 
    link: function(scope, elm, attrs, ctrl) { 
     console.log("Nobility on attribute: "+$parse(attrs.nobility)(scope.$parent)); 
    } 
}; 
}]); 

HTML:

<fold-out-menu-directive title="Account" items="AccountMenuItems" nobility="NOBILITY_LEVEL_SOLDIER"></fold-out-menu-directive> 

NOBILITY_LEVEL_SOLDIERは未定義として印刷されます。私の質問は、正しい値として表示されている間、この定数をディレクティブにどのように渡すのですか?また、NOBILITY_LEVEL_SOLDIERよりNOBILITY.Soldierを使用することをお勧めしますが、それはさらに問題を引き起こすようです。周りの私の唯一の仕事

は、これまでのところ、このでした:

TLKApp.controller('NavigationMenuCtrl', ['$scope','NOBILITY','NOBILITY_LEVEL_SOLDIER', function($scope, NOBILITY, NOBILITY_LEVEL_SOLDIER) { 
$scope.NobilitySoldier = NOBILITY_LEVEL_SOLDIER; 

そしてHTMLにNobilitySoldierを参照してくださいが、これは単一の定数の目的に反し。

答えて

0

あなたは$ injectorを使用できます。サービスやその他のコンポーネントを手動で注入することができます。

return { 
    scope: { 
     title: '@', 
     items: '=', 
     nobility: '=?' 
    }, 
    templateUrl: 'HTML/Directives/FoldOutMenu.html', 
    link: function(scope, elm, attrs, ctrl) { 
     var nobil = $injector.get(attr.nobility); // nobil will be your constant   
    } 
}; 
+1

私は少し感謝したいと思います。私は解決策を見つけることができず、これが完全に機能することに本当に不満を抱いていました。 AngularJSはかなり大きいです。 – JelleFm

関連する問題