0

他のサービスに依存して、サービスを作成しました。しかし、初期化は機能していません。

ショーケースとしてプランカーを見つけることができます

作業に近いはずです...ヒントはありますか?前もって感謝します!

編集: プランカーは現在修正されており、参照として使用できます。

4

2 に答える 2

1

あなたの例からわかるように、

  • を適切に定義していませんでしfactory.thisservice
  • testService.doLoadItems(callback);代わりに testServiceMockConfig.doLoadItems(callback);

この単純なデモで見つけることができるサービス-ファクトリ-プロバイダーと定義の違い:

Fiddle

固定例:

angular.module('testServiceMockConfig', [])
    .factory('testServiceMockConfig', function () {
        console.log("setup cqrs mock config.");

        return{
        doLoadItems : function (callback) {
            console.log("mock loading data");
            if (!this.configuredLoadItems) {
                throw Error("The mock is not configured to loadItems().");
            }
            callback(this.loadItemsError, this.loadItemsSuccess);
        },
        whenLoadItems : function (success, error) {
            this.configuredLoadItems = true;
            this.loadItemsSuccess = success;
            this.loadItemsError = error;
        }
        }
    });


angular.module('testService', ['testServiceMockConfig'])
    .factory('testService', ['testServiceMockConfig', function (testServiceMockConfig) {

        console.log("mock version. testServiceMockConfig: ");

        return {
          loadItems : function (callback) {
            testServiceMockConfig.doLoadItems(callback);
        }
        }
    }])


angular.module('ItemApp', ['testService'])
    .controller('ItemsCtrl', ['$scope', 'testService', function ($scope, testService) {
        $scope.text = 'No items loaded';
        testService.loadItems(function (error, items) {
            if (error) {
                $scope.text = "Error happened";
            }
            $scope.text = '';
            for (i = 0; i < items.length; i++) {
                $scope.text = $scope.text + items[i].name;
            }
        })
    }]);

デモPlunker

于 2013-11-06T21:00:05.387 に答える