Angularjs : 为什么控制器不能从服务访问对象属性?我真的很困惑

Angularjs :why controller can not access object properties from service?I really confused

angular.module('voteApp').factory('VoteFty', function (VoteRsc, VoteStatisticRsc) {

    var data = {
        vote: {}
    };

    var view = function () {

        VoteStatisticRsc.get({id: 1}, function (resp) {
            data.vote = resp;
        })
    };

    var vote = function (params) {

        VoteRsc.update({id: 1, index: params}, function (resp) {
            alert('ok!');
        })
    };

    view();

    return {
        data: data,
        vote: vote,
        view: view
    }
});

angular.module('voteApp').controller('VoteCtrl', function ($scope, VoteFty) {
  
    console.log(VoteFty.data);  // Object{vote:..}
    console.log(VoteFty.data.vote); // Object{}
}
                                     
                                     
在控制台VoteFty.data显示它有投票属性并且它的值是绝对正确的,但是VoteFty.data.vote是空的,这真是奇怪。

为什么VoteFty.data.vote是空的?我实在是想不明白,请帮我解答一下,谢谢!

你可以像这样使用工厂:

angular.module('voteApp').factory( 'VoteFty', function () {

    var factory = {};
    var privateVar = 'something';

    factory.data = function(){
        //some code here like return private var ect
        return privateVar;
    };

    return factory;
});

而且你可以使用 VoteFty.data();