角度指令ng-repeat和范围问题

时间:2017-01-09 13:55:36

标签: javascript angularjs angularjs-ng-repeat

我有些麻烦。在commentsFeedback中的指令ng-repeat中,我显示了一些用户评论。 在响应中单击后,我从服务器获取新对象。我将$scope.users[0].atrb更新为response.result,但指令中的ng-repeat不会重写此更新。

myApp.controller('myCtrl', ['$scope', '$http', 'Myfactory',
    function ($scope, $http, Myfactory){
    $scope.commentFunk = function(comment, commentForm){
        $http.post('url/', {text: comment.text})
            .success(function (response) {
                $scope.users[0].atrb = response.result;
            })
            .error(  function (response) {
                console.log('Response', response);
            })
    }
}]);
myApp.directive('commentsFeedback', function () {
    return {
        restrict: 'AE',
        template: "<h2>Comments</h2>" +
        "<div ng-repeat='key in some_list'>" +
        "<div ng-repeat='item in key.comments_list'><h4>{$ key.name $}</h4> <b>{$ item.author $}:</b> {$ item.text $}" +
        "</div></div>",
        link:function (scope, element, attrs){
            scope.some_list = scope.users[0].atrb;
        }
      }
   });

如何在从服务器获取响应后重新显示指令中的元素,或者如何在更改scope.users[0].atrb后更新指令中的元素?

1 个答案:

答案 0 :(得分:1)

尽量不要将scope.users[0].atrb重新分配给scope.some_list并直接在ng-repeat中使用它。像这样:<div ng-repeat='key in users[0].atrb'>。或者您可以将response.result分配给users[0].atrbsome_list(我只是不确定您在此处提供的代码背后的内容)?否则,我认为您必须按照评论中的说明使用$watch