在ajax请求之后更新控制器变量

时间:2014-06-20 15:36:34

标签: ajax angularjs

我是AngularJS的新手,我花了好几个小时试图找出我的代码有什么不对...

    var articles = angular.module('Articles', []).config(function($interpolateProvider){
        $interpolateProvider.startSymbol('{§').endSymbol('§}');
    });

    articles.controller('CommentsCtrl', ['$scope', '$http', function($scope, $http) {        
     this.comments = [];

     this.showComments = function (index) {                     
        $http({
            method: 'POST',
            url: '{{ path ('backend_article_commentaires')}}',
            data: {articleID:index}
          })
          .success(function (data, status, headers, config) {
              comments = data;
          })
          .error(function (data, status, headers, config) {
             console.log(data)
          });
          }
        }]);

问题是 评论 变量不会改变......

请问我怎么解决这个问题?

更新

<div class="md-modal md-effect-13" id="modal-comments"
    ng-controller="CommentsCtrl as ctrl">
    <div class="md-content">
        <h3>
            <i class="fa fa-comments"></i> Tous les commentaires
        </h3>
        <div>
            <div id="list-comment">
                <h4>Cet article n'a aucun commentaires...</h4>
                <li ng-repeat="comment in ctrl.comments" class="media">
                  <a>{{ comment.title }}</a>
                </li>
            </div>
            <div class="button-row">
                <button class="btn btn-danger md-close md-yes">Fermer</button>
            </div>
        </div>
    </div>
</div>

1 个答案:

答案 0 :(得分:0)

你的问题是范围之一(而不是角度范围),你的成功函数中的这个与你的控制器中的这个不一样。如果你指定&#34;这个&#34;到控制器中的变量,然后引用你应该好的去。

articles.controller('CommentsCtrl', ['$scope', '$http', function($scope, $http) {        
    this.comments = [];

    var rootThis = this;

    this.showComments = function (index) {                     
    $http({
            method: 'POST',
            url: '{{ path ('backend_article_commentaires')}}',
            data: {articleID:index}
        })
        .success(function (data, status, headers, config) {
            rootThis.comments = data;
        })
        .error(function (data, status, headers, config) {
            console.log(data)
        });
    }
}]);

正如你所看到的,我创建了一个rootThis变量来保存&#34;这个&#34;这样我就可以在成功函数中使用它