3

私が見つけることができるすべての情報 (Angular のドキュメントを含む) では、サービスをプロバイダーに挿入する$get方法は次のメソッドを使用することです。

var myApp = angular.module('myApp', []);

myApp.provider('helloWorld', function() {
    this.$get = function() {
        return {
            sayHello: function() {
                return "Hello, World!"
            }
        }
    };
});

function MyCtrl($scope, helloWorld) {    
    $scope.hellos = [helloWorld.sayHello()];
}

これは、 angular 1.2以下で完全に機能します: http://jsfiddle.net/1kjL3w13/

ただし、 angular 1.3に切り替えると、$get機能が完全に壊れます。関数から返された$getものはプロバイダーのインスタンス化に使用されなくなったため、fe サービスの注入には使用できなくなったようです。

上記と同じ例ですが、angular 1.3を使用しています: http://jsfiddle.net/duefnz47/

これは、Angular ドキュメントで提供されている動作とまったく同じです。したがって、ドキュメントが間違っているか、完全に誤解しています。メソッドが以前と同じように機能するかどうかはあまり気にしませんが$get、プロバイダーにサービスを確実に注入できるようにする必要があるだけです。

4

1 に答える 1

2

問題は、角度 1.3 に従って無効なグローバル コントローラーを使用していることです。

だから使う

angular.module('myApp').controller('MyCtrl',function ($scope, helloWorld) {    
    $scope.hellos = [helloWorld.sayHello()];
});

ここに更新されたフィドルがあります

**

移行ドキュメント公式

**それが役立つことを願っています:)

于 2015-06-30T12:00:30.143 に答える