1

コントローラと関数の間で変数を共有しようとしています。しかし、私はこのことを言って、コントローラからエラーが出ます:角度:サービスを使用してコントローラ内の変数にアクセスできません

TypeError: Cannot read property 'getSet' of undefined 

私は、多くのチュートリアルを行っているが、私は間違っているつもりですどこか分かりません。 私のサービスコードは、このようなものです:

setDisplay = function($scope, $mdDialog, shareData) { 

    console.log(shareData.getSet()); // this is working 

    $scope.selected = shareData.getSet(); 
    $scope.hide = function() { 
     $mdDialog.hide(); 
    }; 
    $scope.cancel = function() { 
     $mdDialog.cancel(); 
    }; 
    $scope.answer = function(answer) { 
     $mdDialog.hide(answer); 
    }; 
}; 

私のコントローラは、このようなものです::

app.controller('topicController', ['$scope', '$http', '$mdDialog', 'shareData', 
function ($scope, $http, $mdDialog, $mdToast, shareData) { 

    console.log(shareData.getSet()); // NOT WORKING 

}]); 

答えて

3

あなたが持っていた私は、このように定義された私の関数からselectedに達することができています

app.service('shareData', function() { 

    var selected = ["plz", "print", "something"]; 

    var putSet = function(set) { 
     selected = set; 
    }; 

    var getSet = function() { 
     return selected; 
    }; 

    return { 
     putSet: putSet, 
     getSet: getSet 
    }; 
}); 

topicControllerコントローラの工場機能で余分な$mdToastを削除する必要があります。

の背後に理由がありませんでした。現在、DI配列の隣にある関数の中でそのインスタンスを使用しています。['$scope', '$http', '$mdDialog', 'shareData', function &のような4つの依存関係があります。その機能の中には、実際には5つの依存関係がありました。$mdToast余分です。したがって、何が起こっているのかは、関数の$scopeは、'$scope' DI配列の値を保持します。同様に、右から左に移動します。しかし、$mdToast(コントローラー機能で)の場合、'shareData'(DI配列の)&の値を保持し、次のパラメーターshareDataは何も取得しません。

app.controller('topicController', ['$scope', '$http', '$mdDialog', 'shareData', 
     function ($scope, $http, $mdDialog, shareData) { //<--removed $mdToast 
    console.log(shareData.getSet()); 
    } 
]); 

注:あなたはDI inline array annotationを使用しているので、依存性は、アレイ内に注入される順序は、同じ順序であなたが 根底にある工場の機能で、その後注入しなければなりません。

+0

ありがとうございます!あなたは私の貴重な時間を救った!しかし、私はそれにアクセスすることができなかった正確な理由を取得していないと$ mdToastを削除する魔法をした –

+0

@ jAYANTYADAV私は詳細を説明して、私の答えを更新..私はそれがあなたを助けるだろうと思う。ありがとう:) –

+0

もう一度ありがとう! Btw、DI配列とは何ですか?私はフルフォームを意味します。 –

関連する問題