Angular JS - 在http之后不更新消息

时间:2015-01-28 15:46:22

标签: javascript angularjs

Angular还是新手。我尝试了$scope.$apply();,但这不适用于$http,所以我尝试了$watch,但没有解决它。

这是我的Msg HTML:

<div class="alert alert-success" role="alert"  ng-bind="ValidationContainer.SuccessMessages"></div>

这是我的Angular JS代码:

$scope.ValidationContainer;

    $scope.sendForm = function () {

        $http({
            method: 'POST',
            url: formActionUrl,
            data: $scope.ViewModel
        }).success(function (data, status, headers, config) {
            $scope.ValidationContainer = data.ValidationContainer;

        }).error(function (data, status, headers, config) {

        });

        $scope.$watch('ValidationContainer', function () {
            console.log('changed');
        });
    };

我可以看到成功消息是从控制台中的服务器返回的:

enter image description here

但是消息总是空白的:

enter image description here

修改

包含数据的控制台 enter image description here

使用Console.log

$scope.sendForm = function () {

            $http({
                method: 'POST',
                url: formActionUrl,
                data: $scope.ViewModel
            }).success(function (data, status, headers, config) {
                console.log(data);

                $scope.ValidationContainer = data.ValidationContainer;

                console.log($scope.ValidationContainer);

            }).error(function (data, status, headers, config) {

            });

            $scope.$watch('ValidationContainer', function () {
                console.log('changed');
            });
        };

编辑2

好的,我让它像这样工作(没有$watch使用{{ }}):

            <div class="alert alert-success" role="alert">
                <ul ng-repeat="msg in ValidationContainer.SuccessMessages">
                    <li>{{msg.Message}}</li>
                </ul>
            </div>

和Angular:

$scope.sendForm = function () {

    $http({
        method: 'POST',
        url: formActionUrl,
        data: $scope.ViewModel
    }).success(function (data, status, headers, config) {
        console.log(data);

        $scope.ValidationContainer = data.ValidationContainer;

        console.log($scope.ValidationContainer);

    }).error(function (data, status, headers, config) {

    });
};

问题2:如果没有 ng-repeat

,有更好的方法可以显示

1 个答案:

答案 0 :(得分:-1)

你想要显示一个对象,这是不可能的。

你必须这样做:

  <div class="alert alert-success" role="alert" ng-repeat="message in ValidationContainer.SuccessMessages" ng-bind="message.Message"></div>

它将显示字符串