0

我的服务器可以将更改发送到我的应用程序的状态。当我的应用收到这样的更改时,会调用以下函数:(注意,在实际应用代码中,此函数不在全局范围内)

function(message){
    data = window.JSON.parse(message.data);
    console.log(data);
    for(element in data){
        if(element[0] == "_"){continue;}
        $scope.state[element] = data[element];
    }
}

我还尝试通过克隆状态对象来做到这一点,然后在完成操作后将其附加到范围内。

克隆函数如下所示:

var clone = (function(){
    return function (obj) { Clone.prototype=obj; return new Clone() };
    function Clone(){}
}());

我接收数据的函数现在看起来像这样。

function(message){
    data = window.JSON.parse(message.data);
    console.log(data);
    var cloned = new clone($scope.state);
    for(element in data){
        if(element[0] == "_"){continue;}
        cloned[element] = data[element];
    }
    $scope.state = cloned;
}

我的控制器中只有一个元素来测试这个:

<div ng-controller='MainController'>
    {{ state | json}}
</di>

它只是没有更新。

是否有其他方法可以添加/更改您事先不知道名称的属性,以便绑定继续工作?

4

1 回答 1

1

你在打电话$scope.$apply()吗?

如果您的数据是异步返回的,那么 Angular 很可能在您更新范围之前已经完成了 UI 更新。试一试,看看是否有效。如果没有,那么我们可能需要更多信息。

于 2012-10-25T01:41:12.540 回答