角度控制器无法从服务中读取更新。有什么建议?

时间:2017-06-06 09:17:31

标签: javascript angularjs angular-services angular-controller

我有一种情况,在我的角度服务中,我有很多属性。这些属性链接到控制器。

服务:

angular.module('...')
    .factory('PollServ', function PollServ($http, ...) {

        var service = {
            question: '',
            votes: [[]]
        }

        ...

        // make http request to API
        var request = $http({ ...

        // once the value is retrieved, update properties
        request.then(function (res) {

            service.question = res.data.question;
            ...
    }

控制器:

angular.module('...')
    .controller('PollCtrl', function PollCtrl(..., PollServ) {
        $scope.question = PollServ.question;
        $scope.votes = PollServ.votes;
        ...

现在,虽然投票得到了适当的更新,但问题并非如此。我没有做任何不同的事情,除了votes是一个数组而question只是一个常规字符串。我认为数组可能与能够动态更新有关,但不是简单的字符串。

如何在没有必要将字符串转换为数组的情况下使其工作?

1 个答案:

答案 0 :(得分:0)

您自己说过 - 问题是string,因此不会在控制器/视图中更新。

你能做的就是把问题变成一个对象。例如:

在工厂

var service = {
    question: {
        name: ''
    },
    votes: [[]]
}

...

service.question.name = res.data.question;

然后,您需要将视图中的引用更改为question.name