在angularJS中重写的值

时间:2016-06-17 10:32:10

标签: angularjs

以下代码存在问题。任何人都可以检查图像和代码。根据调用顺序不会显示值,而是覆盖它。开发工具控制台中的响应是正确的,因为UI显示不同的重新排列。 Image

相同的代码行 - JS代码 -

$scope.fetchOneBlog = function (id) {
        $http.get(urlBase+'/blog/'+id)
        .success(function(data){
            $scope.blogDetailsError=false;
            $scope.blogs = data;
        });
    };

  $scope.getOneUser = function (userId) {       
        $http.get(urlBase+'/user/'+userId)
        .success(function(data){
            $scope.blogDetailsError=false;                          
            $scope.oneUser={"name":""};
            $scope.oneUser = data;
            console.log($scope.oneUser.name);
        var myObject = JSON.stringify($scope.oneUser);
            console.log(myObject);

        });

控制器js的末尾还有一个代码 -

$scope.init = function(id){
        $scope.fetchOneBlog(id);    
    };

上述代码是否与下面的视图有任何问题?

查看代码 -

<ul class="container">
    <li class="comment" ng-repeat="review in blogs.review | orderBy: '-creationTime' ">
        <div class="clearfix">
        <h5 class="pull-left" ng-init="getOneUser(review.userId)"><b>{{oneUser.name}}</b></h5>
        <p class="pull-right"><em>Commented on : &nbsp;{{ review.creationTime | date:'medium' }}</em></p>
        </div>
         <p>
        <em>{{ review.comments }}</em>
    </p>
   </li>
 </ul>

任何人都可以看一下图片,让我知道问题或错误。

1 个答案:

答案 0 :(得分:0)

好的,问题是每次都会覆盖$ scope.oneUser对象。控制台正确显示的原因是因为记录时值是正确的。被覆盖的值是因为该值与重复项(审核)不在同一上下文中,但与其父博客相同。= / p>

尝试这样的事情:

  var isNull = function(obj) {
    if (typeof(obj) === "undefined" || obj === null || obj === "null") {
      return true;
    }
    return false;
  };

$scope.allUsers = [];

  $scope.getUsername = function(userId) {
    var userName = "";

    var users = $scope.allUsers.filter(function(obj) {
      return obj.userId === userId;
    });
    //check if the user is in the list and get the first value
    if (!isNull(users) && users.length > 0)
    {
      userName = users[0].name;
    }
    return userName;

  };

  $scope.getOneUser = function(userId) {
    $http.get(urlBase + '/user/' + userId)
      .success(function(data) {
        $scope.blogDetailsError = false;
        var oneUser = {
          "name": ""
        };
        oneUser = data;
        oneUser.userId = userId;
        $scope.allUsers.push(oneUser);
        console.log($scope.oneUser.name);
        var myObject = JSON.stringify($scope.oneUser);
        console.log(myObject);

      });

然后你可以在html中使用它

<h5 class="pull-left" ng-init="getOneUser(review.userId)"><b>{{getUsername(review.userId)}}</b></h5>

如果有帮助,请告诉我。

Plunker here