0

属性を介して渡される場所でスコープにアクセスする必要があるディレクティブがあります。

HTML:

<div my-directive scope-location="settings.main.url">
    ...
</div>

指令:

link: function(scope, elm, attrs) {
        // How can I do
        // scope['settings']['main']['url'] = angular.element(elm).text();
        // where "['settings']['main']['url']" comes part from attr "scope-location"
        // with value "settings.main.url"?

        scope[attrs.scopeLocation] = angular.element(elm).text();
    }

フィドル: http://jsfiddle.net/GEhSG/3/

4

1 に答える 1

0

これを達成するには3つの方法があります

  • ディレクティブはそのスコープを親から継承するため、変数は次を使用して使用できます

    scope.settings.main.url

  • ハードコーディングしたくない場合は、次$parseのようなサービスを使用できます

    var location=$parse(attrs.scopeLocation);

    場所(スコープ);

  • 次のように、分離スコープを作成し、変数をディレクティブ定義のスコープ オブジェクトに渡すことができます。

    スコープ: { scopeLocation:'=' }

最初の 2 つのアプローチのために、フィドルhttp://jsfiddle.net/beyND/を作成しました。

于 2013-09-01T09:25:44.253 に答える