3

処理後に同じ関数を呼び出す必要があるディレクティブがいくつかあります。この関数は、メイン コントローラー スコープにアクセスする必要がありますが、DOM も変更する必要があります。この関数はどこでどのように宣言する必要がありますか?

4

2 に答える 2

7

サービスを使用する必要があります。サービスはにアクセスできますが$rootScope、DOMの変更をディレクティブレベルで維持する方がよい場合もありますが、場合によってはそれを利用できます。

angular.module("myModule", [])
.factory("MyService", function ($rootScope) {
    return {
        myFunction: function () { // do stuff here }
    }
})
.directive("MyDirective", function (MyService) {
    return {
        link: function (scope, iElement, iAttrs) {
            // try do keep dom modification here, you have access to MyService,
            // let it do the algorithm and try to keep dom modification here.
            // PS: you can also inject $rootScope to directives.
        };
    };
});
于 2013-02-13T17:36:31.010 に答える