1

2 つのディレクティブ間でメソッドを共有する最も簡単な方法は何ですか?

ファクトリを使用して、それをディレクティブに挿入しようとしました。しかし、その後、パラメーターをファクトリーに渡すことができません。したがって、ファクトリからデータを取得できますが、ファクトリを動的にすることはできません。

.directive('myFirstDirective', [...])
.directive('seconDirective', [...])
.factory('MenuItems', [function(){
            return "testString";
}]);

コードにファクトリを追加することで、任意のディレクティブで実行できます。

var test = MenuItems;

しかし、私がしたくないことは次のとおりです。

var test = MenuItems(myParameter); //so I can change the return in menuItems depending on myParameter
4

2 に答える 2

2

サービスを使用してそれを行うことができます:

https://gist.github.com/anonymous/50b659c72249b58c31bf

.factory('MenuItemsService', [function(){
    return {
        getMenuItems : function(parameter){
            if ( parameter === 'foo' ){
                return ['bar', 'jar', 'tar'];
            } else {
                return ['asd', 'bsd', 'csd'];
            }
        }
    };
}]);

次に、各ディレクティブでサービスを注入できます。たとえば、次のようになります。

MenuItemsService.getMenuItems('foo');
MenuItemsService.getMenuItems('bar');
于 2013-10-31T14:46:48.347 に答える