在控制器中,我使用$ http或$ resource服务获取一些JSON数据。然后,我将此数据写入$
scope,AngularJS更新页面的HTML结构。我的问题是我需要知道用Angular ng-repeat
指令填充的列表(我的意思是HTML
DOM元素)的新大小(宽度和高度)是多少。因此,我必须在Angular完成DOM结构更新后立即运行javascript代码。正确的做法是什么?我过去四个小时都在搜索互联网,但是找不到解决我问题的方法。
这就是我接收JSON数据的方式:
var tradesInfo = TradesInfo.get({}, function(data){
console.log(data);
$scope.source.profile = data.profile;
$scope.trades = $scope.source.profile.trades;
$scope.activetrade = $scope.trades[0];
$scope.ready = true;
init(); //I need to call this function after update is complete
});
这就是init()
函数中发生的事情:
function init(){
alert($('#wrapper').width());
alert($('#wrapper').height());
}
我知道必须有一些容易解决的问题,但我现在不能立即找到它。提前致谢。
实际上,在这种情况下,成角度的方法不是简单的方法,而是唯一正确的方法:)
您必须编写一条指令并将其附加到要知道其高度的元素上。然后从控制器$
broadcast一个事件,指令将捕获该事件,然后您就可以执行DOM操作。切勿在控制器中。
var tradesInfo = TradesInfo.get({}, function(data){
console.log(data);
$scope.source.profile = data.profile;
...
$scope.$broadcast('dataloaded');
});
directive('heightStuff', ['$timeout', function ($timeout) {
return {
link: function ($scope, element, attrs) {
$scope.$on('dataloaded', function () {
$timeout(function () { // You might need this timeout to be sure its run after DOM render.
element.width()
element.height()
}, 0, false);
})
}
};
}]);
问题内容: 我有一个其可见性由切换的元素。我还在这个元素上使用CSS动画-来自ng-animate的自动动画-对其条目进行动画处理。 元素将包含图像或视频。 在元素包含视频的情况下,我想播放它,但是在完成动画制作之前,我不想播放视频。 因此,我想知道是否有一种简单的方法可以将回调绑定到AngularJS中 CSS 动画的末尾? 该文档引用了a ,但我看不到指定它的方法… 一种解决方法(?)我想到的
问题内容: 在下面,该语句在调用完成 之前 被执行。我该如何更改? 问题答案: 您不能-至少不明智。虽然可以在jQuery ajax请求上设置一个属性,但过去在尝试将其与值一起使用时遇到了 严重的问题。 尝试重新考虑您要完成的工作: 然后: 或者,如果您的回调 仅 需要访问返回的数据,那么您可以更简单地执行 然后
问题内容: 总的来说,我对Swift和Xcode还是比较陌生,并且发现很多困难要设法解决。 我正在开发一个利用后端服务器的应用程序。为了不阻塞主线程,每当应用程序从服务器下载任何内容时,它都会异步地在其他线程上完成。但是,其余代码将继续在主线程上执行,并且当应该从服务器下载的数据尚未下载时,它将崩溃。我想知道如何在异步函数完成后调用函数来运行,这对于单独文件中的函数必须完成。 我读过闭包可能对此有
问题内容: 因此,我一直在尝试Gulp,看看它在速度上与Grunt相比如何,我对结果印象深刻,但是我有一件事我不知道如何在Gulp中进行。 因此,我有这个任务来缩小HTML: buildMetaData对象具有我需要的自定义功能,以及为什么不能使用像gulp- changed这样的插件。我要弄清楚的是,在缩小完成后如何(如果可能)运行代码块来处理所有文件并成功运行。gulp有可能发生这种情况吗?
这是我的模板: 这是我的视图模板: 我得到的内容是html,我想在视图中显示,但我得到的只是原始html代码。如何呈现HTML?
在我的AngularJS应用程序中执行任何控制器之前,我有一些全局数据需要加载(即在AngularJS中全局解析依赖项)。 例如,我有一个,它带有方法,它向后端服务器发出请求,以获取关于当前通过身份验证的用户的数据。我有一个控制器需要这些数据来启动另一个请求(例如加载用户的余额)。 我怎样才能做到呢?