使用AngularJS修改对象位置只需一次
Modify object position with AngularJS works just one time
我得到了一个对象数组$scope.postATraiter,还有一个函数,它为每个post提供一个随机的xy值。
$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}}">
这是因为$scope.posAleatoire()
依赖于$scope.postsATraiter
,所以当您在该函数之外调用$scope.posAleatoire()
时,如果您正在为$scope.postsATraiter
赋值,则不会起作用。
在调用$scope.posAleatoire()
之前,您必须验证$scope.postsATraiter
是否具有某些值。
相关文章:
- Angularjs:空对象,当只有一次点击时
- 一次显示一个隐藏指令-AngularJS
- 使用AngularJS修改对象位置只需一次
- 一次显示一个指令AngularJS
- AngularJs一次绑定和布尔运算符的值顺序
- 在angularjs中一次选择一个项目
- 在Angularjs中只需将Javascript对象转换为JSON一次
- 在AngularJS中,一次进行两次调用是一种可接受的方法
- AngularJS指令在ng-repeat中为每个项目设置不同的值,只重复一次
- AngularJS一次上传一个文件
- 有没有办法在 AngularJS 中一次订阅多个事件
- AngularJS应用程序为多个控制器加载和处理一次JSON数据
- Javascript/Angularjs :等待承诺实现,然后再进入foreach Loop中的下一次迭代
- setInterval in setTimout 在 angularjs 控制器中只触发一次
- 在Angularjs中只运行一次方法
- 只显示“;没有结果”;在AngularJS中使用嵌套ng repeat时一次
- AngularJS-只对ng更改触发$timeout事件一次
- AngularJS:绑定一次属性
- 如何在AngularJS中使控制器功能只执行一次
- 每两次切换播放器一次JavaScript-AngularJS