在ionic开发中,我们有的方法需要在页面渲染之后在执行,而一般js代码在页面渲染之前就执行了,所以有些东西没有实现。
下面的方法可以实现这个功能:
这里用ng-repeat举例:
html的View里面:
<ul>
<li ng-repeat="item in items" on-finish-render="callMethod()">
dummy Text
</li>
</ul>
我们需要添加一个指令 directive.js:
//angularjs渲染完执行
.directive('onFinishRender',['$timeout', '$parse', function ($timeout, $parse) {
return {
restrict: 'A',
link: function (scope, element, attr) {
if (scope.$last === true) {
$timeout(function () {
scope.$emit('ngRepeatFinished'); //事件通知
var fun = scope.$eval(attr.onFinishRender);
if(fun && typeof(fun)=='function'){
fun(); //回调函数
}
});
}
}
}
}])
JS:
//ng-repeat执行完在执行
$scope.$on('ngRepeatFinished', function(ngRepeatFinishedEvent) {
$scope.callMethod = function(){
console.log("渲染完成了")
}
});