AngularJS 这些东西不管数据是不是加载完成,都会第一时间显示页面,这样导致了我这边用 jQuery 的各种困难。例如下面,我取不到 size()。有什么办法让 jQuery 的 ready 等待数据加载完成后执行?
<!-- layout.html -->
<!doctype html>
<html>
<head>
....
<script src="jquery.min.js"></script>
</head>
<body>
<div ng-view></div>
<script>
$(document).ready(function() {
console.log($('.entry').size());
});
</script>
</body>
</html>
// _product.html
<div ng-repeat="product in products" class="entry">
....
</div>
首先,用 angularjs 最好别用 jquery,这是坏习惯,要改 Don't even use jQuery 然后谁告诉你
AngularJS 这些东西不管数据是不是加载完成,都会第一时间显示页面
去查查 resolve 还有 $q怎么用……
http://www.aleaiactaest.ch/blog/2012/06/28/angular-js-and-dom-readyness-for-jquery/
Angularjs 正好我在目前的项目中试用。希望能帮助你。
我也发一段之前写的代码吧,就是用的 resolve,应该还能跑,规不规范得另说...
when('/', templateUrl: '/assets/docatapp/templates/docs_view.html', controller: @DocsViewController, resolve: @user2esolve)
@user3esolve =
redirect: ($route, $location) ->
@path = $route.current.params.path
$location.url @path if @path?
data: ($q, $doCat, $route, $shared) ->
deferred = $q.defer()
unless @path?
params = $route.current.params
page = if params.page then params.page else 1
per = $shared.per()
$doCat.doc.query {page: page, per: per}, (data) ->
deferred.resolve(data)
deferred.promise
@DocsViewController = ($scope, $location, $routeParams, $shared, data) ->
...