ng-repeat与JSON对象不打印

时间:2016-03-10 15:28:46

标签: javascript html angularjs json angularjs-ng-repeat

我有一个控制器chatController.js和一个chat.html

chatController.js

$scope.getMessage = function() {
    Chat.getMessage("C0RRZEDK4")
    .success(function(response) {
        console.log("getMessage: " + JSON.stringify(response));

        $scope.channel = response.messages;
    });
}

chat.html

<div ng-controller="ChatController">
    <form>
        <input ng-style="style(color)" type="text" ng-model="text" placeholder="text">
        <button ng-click="sendMessage()">Send!</button>
        <button ng-click="getMessage()">Get First Message!</button>

    </form>

    <li ng-repeat="msg in channel">
        <li>{{msg.text}}</li>

    </li>

* ng-app在其他地方的头文件中指定,sendMessage()函数正常工作。

问题是当在GUI中单击getMessage时,ng-repeat不会从控制器中设置为channel的{​​{1}}创建列表。

响应json看起来像这样:

response.messages

1 个答案:

答案 0 :(得分:1)

确保您的Chat.getMessage执行$digest内部角度循环。您可以通过以下代码尝试:

Chat.getMessage("C0RRZEDK4")
    .success(function(response) {
        console.log("getMessage: " + JSON.stringify(response));

        $scope.channel = response.messages;
        $scope.$apply() // if it is inside $digest loop it will trigger an error
    });

如果$scope.$apply()不会触发错误,那么您的代码会在角度$digest循环之外执行。