236

以下のようなディレクティブにサービスを挿入しようとしています:

 var app = angular.module('app',[]);
 app.factory('myData', function(){
     return {
        name : "myName"
     }
 });
 app.directive('changeIt',function($compile, myData){
    return {
            restrict: 'C',
            link: function (scope, element, attrs) {
                scope.name = myData.name;
            }
        }
 });

しかし、これは私にエラーを返していますUnknown provider: myDataProvider。誰かがコードを調べて、私が何か間違っているかどうか教えてもらえますか?

4

3 に答える 3

389

ディレクティブにインジェクションを行うことができ、他の場所と同じように見えます。

app.directive('changeIt', ['myData', function(myData){
    return {
        restrict: 'C',
        link: function (scope, element, attrs) {
            scope.name = myData.name;
        }
    }
 }]);
于 2013-03-22T14:59:27.710 に答える
19

ディレクティブの定義を からapp.moduleに変更しますapp.directive。それを除けば、すべてがうまく見えます。 ところで、サービスをディレクティブに挿入する必要があることはほとんどありません。サービス (通常はデータ ソースまたはモデル) を (ビューの一部のような) ディレクティブに挿入する場合、ビューとモデルの間に直接結合を作成します。コントローラーを使用してそれらを一緒に配線して、それらを分離する必要があります。

それはうまくいきます。あなたが何をしているのか、どれが間違っているのかわかりません。これが機能する様子です。

http://plnkr.co/edit/M8omDEjvPvBtrBHM84Am

于 2013-03-22T11:47:29.673 に答える