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

Javascript 角度控制器无法从服务读取更新。有什么建议吗?,javascript,angularjs,angular-services,angular-controller,Javascript,Angularjs,Angular Services,Angular Controller,在我的角度服务中,我有很多属性。这些属性链接到控制器 服务: angular.module('...') .factory('PollServ', function PollServ($http, ...) { var service = { question: '', votes: [[]] } ... // make http request to API

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

服务:

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;
        ...
现在,虽然投票被适当地更新,但问题不是这样。我没有做任何不同的事情,除了
投票
是一个数组,而
问题
只是一个常规字符串。我认为数组可能与动态更新有关,但与简单字符串无关


我如何才能让它工作,而不必将字符串也转换为数组?

你自己说的-问题是
字符串,因此不会在你的控制器/视图中更新

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

工厂内

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

...

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

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

,因为您从未从
$scope.question=PollServ.question一旦分配它,当它在服务中更改时,它将不会被更新,因为您正在分配字符串值-您需要将其包装到对象中,或者使用
监视
获得有关此值更改的通知。一个好的方法是将所有值包装在一个
模型
对象中,然后angular将确保触发其中属性的任何用法updates@OvidiuDolha哦,那真的很有趣。谢谢你,我会尝试一下。@OvidiuDolha我尝试过创建一个模型对象,但是,这似乎也不能更新问题。在我的服务中,现在我有
var服务={model:{question:'',投票:[[]]}