[英]jQuery isn't working properly on my Angular.js site
我正在尝试让Masonry.js在我的网站上运行,尽管我成功地做到了,但它是一个超级hacky解决方案,我不知道为什么会起作用(而且效果不佳)。
我的两个主要问题是:
jQuery无法正常工作
它仅与setTimeout一起使用(否则,元素彼此堆叠,因为图像在加载之前没有高度)
这是我的代码:(或在github上查看)
masonryStyle.js(此文件确实很奇怪。jQuery仅在存在该确切功能的情况下才起作用。删除任何部分并会中断)
setTimeout(function() {
var elem = document.querySelector('.grid');
var msnry = new Masonry( elem, {
itemSelector: '.grid-item'
});
}, 500);
$('.grid').masonry({
columnWidth: '.grid-sizer',
itemSelector: '.grid-item',
percentPosition: true
});
home.html(需要砌筑的内容
<div class = "searchBar">
<form ng-submit = "searchAuthor()" class = "searchSection">
<input type = "text" class = "searchInput" ng-model = "byAuthor" placeholder = "Search Authors">
<input type = "submit" class = "searchSubmit" value = "Search">
</form>
<div class = "spacer"></div>
<form ng-submit = "searchTag()" class = "searchSection">
<input type = "text" class = "searchInput" ng-model = "byTag" placeholder = "Search Tags">
<input type = "submit" class = "searchSubmit" value = "Search">
</form>
</div>
<div class = "grid">
<div class = "grid-item" ng-repeat = "image in images">
<img ng-src = "{{image.link}}" class = "image">
<div class = "imageTitle">{{image.title}}</div>
<div class = "imageAuthor">Posted by: {{image.author}}</div>
<div class = "imageUpvote"><a href ng-click = "upvote(image)"><i class="fa fa-thumbs-o-up"></i></a> {{image.upvotes}}</div>
<div class = "imageTags" ng-repeat = "tag in image.tags">{{tag}} </div>
</div>
</div>
index.ejs
<!DOCTYPE html>
<html>
<head>
<title>Pin Viewer</title>
<link rel='stylesheet' href='/stylesheets/style.css' />
<link rel='stylesheet' href='https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css'>
<link href='https://fonts.googleapis.com/css?family=Quicksand:400,300' rel='stylesheet' type='text/css'>
</head>
<body ng-app = "app" ng-controller = "MainCtrl">
<div class = "pageWrapper">
<div class = "mainPage">
<div class = "navBar">
<a href = "#/profile"><div class = "appName">{{user.username}}</div></a>
<a href = "/login/twitter/"><div class = "navButton" ng-hide = "user.username">Log In</div></a>
<a href ng-click = "logout()"><div class = "navButton" ng-show = "user.username">Log Out</div></a>
</div>
<div class = "pageTitle"><a href = "#/">Pin Viewer</a></div>
<div class = "postImage">
<button class = "postImageButton" ng-click = "postImage()">Post Image</button>
</div>
<div class = "error">{{error}}</div>
</div>
<div class = "pageContent">
<ui-view></ui-view>
</div>
</div>
<script src="javascripts/jquery-1.11.3.js"></script>
<script src='javascripts/masonry.pkgd.js'></script>
<script src='javascripts/angular.min.js'></script>
<script src='javascripts/angular-ui-router.js'></script>
<script src="javascripts/angularApp.js"></script>
</body>
</html>
尝试使用此角度化的砌体版本: https : //github.com/passy/angular-masonry
某些jQuery起源在Angular.js应用程序中造成问题,否则,如果要使用jQuery,则必须在每次更改路线时加载所有jQuery函数
例如:
$rootScope.$on('$viewContentLoaded', function(event) {
$('#side-menu').metisMenu();
});`
您必须像上面那样做。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.