繁体   English   中英

jQuery在我的Angular.js网站上无法正常工作

[英]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}}&nbsp;     </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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM