【问题标题】:Getting started with $inject$inject 入门
【发布时间】:2016-02-22 02:57:56
【问题描述】:

我正在尝试关注John Papa's Angular styleguide 来编写一个有角度的应用程序,但是依赖注入对我来说不起作用。 ShopController 和 dataservice 都有依赖关系,但无论我尝试什么,我总是遇到"cannot read property ____ of undefined"。

angular
    .module('shopApp', []);

////////////////////////////////////////////////////////

angular
    .module('shopApp')
    .controller('ShopController', ShopController);

ShopController.$inject['dataservice'];

function ShopController(dataservice){
    var vm = this;
    vm.products = [];
    vm.getProducts = getProducts;
    vm.title = 'test title';

    activate();

    function activate() {
        return getProducts().then(function() {
            console.info('Got Products');
        });
    }

    function getProducts() {
        return dataservice.getProducts().then(function(data) {
            vm.products = data;
            console.info(data);
            return vm.products;
        });
    }
}

////////////////////////////////////////////////////////


angular
    .module('shopApp')
    .factory('dataservice', dataservice);

dataservice.$inject = ['$http'];

function dataservice($http) {
    return {
        getProducts: getProducts
    };

    function getProducts() {
        return $http.get('/api/products')
            .then(getProductsComplete)
            .catch(getProductsFailed);

        function getProductsComplete(response) {
            return response.data.results;
        }

        function getProductsFailed(error) {
            console.error('XHR Failed for getProducts.' + error.data);
        }
    }
}

这种方法确实看起来更干净,但我很困惑为什么它不能正常工作。有什么建议吗?

【问题讨论】:

    标签: angularjs


    【解决方案1】:

    替换这个:

    ShopController.$inject['dataservice'];
    

    通过

    ShopController.$inject = ['dataservice'];
    

    【讨论】:

    • 哇,它一直在盯着我看!不会再犯这个错误了:)
    猜你喜欢
    • 2021-09-09
    • 2012-07-22
    • 1970-01-01
    • 2012-11-15
    • 2010-09-21
    • 1970-01-01
    • 2011-05-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多