検索

ホームページ  >  に質問  >  本文

angular.js - angular 将$scope传入service

app.contronller('xxx', ['$scope', 'service', function($scope, service) {
    $scope.xxx = 'xxxx';

    service.say($scope);
}]);

app.service('xxx', [function() {
    this.say = function($scope) {
    }
}]);

现在维护的代码里好多这样的情形,这是不是错误的用法?感觉用起来很爽,但是代码好混乱

我想大声告诉你我想大声告诉你2743日前685

全員に返信(4)返信します

  • ringa_lee

    ringa_lee2017-05-15 16:52:23

    これは明らかに怠惰なアプローチであり、サービス メソッドに $scope を渡すと、その意味が非常に曖昧になり、どのパラメータが実際に使用されるかがまったく不明になります。
    また、サービス メソッドが $scope に不必要に依存することになります。

    返事
    0
  • 黄舟

    黄舟2017-05-15 16:52:23

    厳密に言えば、非グローバルステータス値、特に変更はサービス内で処理されるべきではありません。これは $scope です。言い換えれば、ここでのサービスはインターフェイスに似ており、関数のパラメーター リストは一般的なパラメーターではなく明確である必要があります。

    など リーリー

    もちろん、$location や $rootScope などのグローバル変数は、他のコンポーネントを経由する必要がなく、インジェクションによって取得できるため使用できます。

    返事
    0
  • 某草草

    某草草2017-05-15 16:52:23

    私のブログにアクセスしてコールバックパラメータとして渡します

    返事
    0
  • 高洛峰

    高洛峰2017-05-15 16:52:23

    実際にテストしたところ、サービスの値をコントローラーの $scope に返すと、クロージャが機能しないようですが、$scope を直接渡すと $scope が更新されます。サービス内のコントローラー、このようにとても便利です

    返事
    0
  • キャンセル返事