TypeError:无法读取未定义的属性“getAccounts”

时间:2015-04-15 11:43:40

标签: javascript angularjs dependency-injection iife

我正在遵循John Papa的Angular Style指南来创建一个小应用程序,我似乎无法使用controller中的方法解决问题。 {1}} ...

模块

service

控制器

(function () {
    'use strict';
    var accountsApp = angular.module('accountsApp', ['ui.bootstrap', 'ngAnimate']);
})();

服务

(function() {
    'use strict';

    angular
        .module('accountsApp')
        .controller('accountsCtrl', accountsCtrl);

    accountsCtrl.$inject = ['$log'];

    function accountsCtrl($log, accountsDataSvc) {
        /* jshint validthis:true */
        var vm = this;
        vm.title = 'Accounts';
        vm.accounts = [];
        vm.accountForm = null;
        vm.account = { id: 0, name: '', description: '' }

        activate();

        function activate() {
            return getAccounts(1).then(function() {
                $log.info('Accounts loaded');
            });
        }

        function getAccounts(id) {
            return accountsDataSvc.getAccounts(id).then(function(data) { //error here
                vm.accounts = data;
                return vm.accounts;
            });
        }
    }
})();

当我运行应用程序时,我收到错误 TypeError:无法读取属性' getAccounts'在控制器中未定义,但我无法看到我出错的地方 - 非常感谢任何帮助。

1 个答案:

答案 0 :(得分:5)

看起来您忘了将accountsDataSvc注入控制器

尝试:

accountsCtrl.$inject = ['$log', 'accountsDataSvc'];