angular.js - angular 将$scope传入service
我想大声告诉你
我想大声告诉你 2017-05-15 16:50:23
0
4
676
app.contronller('xxx', ['$scope', 'service', function($scope, service) {
    $scope.xxx = 'xxxx';

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

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

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

我想大声告诉你
我想大声告诉你

모든 응답(4)
左手右手慢动作

이것은 분명히 게으른 접근 방식이므로 서비스 메서드의 의미가 매우 모호해집니다. $scope를 전달하면 실제로 어떤 매개 변수가 사용되는지 완전히 불분명해집니다.
그리고 이로 인해 서비스 메서드가 $scope에 불필요하게 의존하게 됩니다.

黄舟

엄밀히 말하면, 비전역 상태 값은 서비스, 특히 수정에서 처리되어서는 안 됩니다. $scope 입니다. 즉, 여기서의 서비스는 일반적인 매개변수가 아닌 함수의 매개변수 목록이 명확해야 하는 인터페이스와 유사합니다.
예를 들어

으아아아

물론 $location, $rootScope 등의 전역변수는 다른 컴포넌트를 거치지 않아도 되기 때문에 인젝션을 통해 얻을 수 있습니다.

某草草

내 블로그에 가서 콜백 매개변수로 전달하세요

小葫芦

실제로 테스트해 보니 서비스의 값을 컨트롤러의 $scope에 반환하면 클로저가 아무런 효과가 없는 것 같았습니다. 하지만 $scope를 전달하면 컨트롤러의 $scope가 직접 업데이트됩니다.

아주 잘 작동해요.
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿