使用AngularJS修改对象位置只能工作一次

时间:2016-05-07 14:33:58

标签: javascript angularjs mongodb

我有一个对象调用$ scope.postsATraiter的数组,我得到了一个为每个帖子提供随机x y值的函数。

 $scope.posAleatoire = function () {
        var w = window.innerWidth;
        var h = window.innerHeight;
        for (var i = 0; i < $scope.postsATraiter.length; i++) {
            var l = parseInt(Math.random() * (w - 200));
            var t = parseInt(Math.random() * (h - 200));
            $('#target'+i).css({
                'left': l + 'px',
                'top': t + 'px',
                'height' : '200px'
            })
        }
    }

这种方法很好但只有在我在这个函数中使用它时才能正常工作:

Posts.query({}, function() {
    $scope.postsATraiter = $scope.posts;
    $scope.posAleatoire();
});

这个函数在每个函数之前调用,她在我的数据库中获取所有帖子并将其存储到$ scope.postsATraiter中,如果我在我的代码中的其他地方使用posAleatoire它什么都不做,为什么?

如果可以提供帮助,我会发布HTML。

<div ng-repeat="post in posts track by post._id">
     <div id="target{{$index}}">

1 个答案:

答案 0 :(得分:0)

这是因为$scope.postsATraiter依赖于$scope.posAleatoire(),因此当您在该函数外调用$scope.postsATraiter时,如果您要将值分配给$scope.posAleatoire(),则无效。

在致电$scope.postsATraiter之前,您必须修改#!/bin/bash echo "hello1"; a=6; b=2; c=3; d=$(($a+$b+$c)); sleep $d; echo "hello2"; 有一些值。