砌体不是功能

砌体不是功能

问题描述:

我想在我的应用程序中使用石工。以下是我的组件模板。砌体不是功能

<template> 
    <div> 
     <section class="section"> 
      <div class="container"> 
       <div class="row team"> 
        <div class="col-md-4 col-sm-6 member" v-for="team in teamMembers"> 
         <div class="team__item"> 
          <div class="team__info"> 
           <h4>{{team.name}}</h4> 
           <small>{{team.title}}</small> 
          </div> 
         </div> 
        </div> 
       </div> 
      </div> 
     </section> 
    </div> 
</template> 

<script src="https://unpkg.com/[email protected]/dist/masonry.pkgd.min.js"></script> 

<script> 
    export default { 
     data() { 
      return { 
       teamMembers: [] 
      } 
     }, 
     mounted() { 
      this.getTeamMembers(); 
     }, 
     methods : { 
      getTeamMembers : function() { 
       this.$http.get('teamMembers').then(response =>{ 
        // console.log(response); 
        if(response.data.status=200) { 
         this.teamMembers = response.data.teamMembers; 
         this.$nextTick(function() { 
          var $container = $('.team'); 

           $container.masonry({ 
           columnWidth: '.member', 
           itemSelector: '.member' 
           }); 
         }) 
        } 
       }) 
      } 
     } 
    } 
</script> 

无论何时呈现视图,我都会收到以下错误。

TypeError: $container.masonry is not a function 

你能让我知道我在做什么错吗?

+0

我不确定你可以在单个文件组件中包含一个'script'。我想你需要通过npm安装masonary,然后在你的主js文件中提供vue来访问它。 –

+0

您不能在单个文件组件的中间放置一个脚本标签 –

+0

将您的脚本标签移动到index.html并尝试使用窗口$('。team') – Deepak

您可以通过this.$el获得vue组件DOM元素。所以,你可以做到以下几点:

$(this.$el.querySelector('.team')).masonry({ 
          columnWidth: '.member', 
          itemSelector: '.member' 
          }); 

但请记住,这是有效,只要你的组件是不是Fragment Instance即它有一个根HTML标记。


您需要在index.html中放置以下脚本行,以便正确加载。

<script src="https://unpkg.com/[email protected]/dist/masonry.pkgd.min.js"></script> 
+0

没有这个功能..我得到了同样的错误。并且我确实有一个单独的根元素elem .. – Gagan

+0

@Gagan是否确定'this'的范围在您的'this。$ http.get'块中是正确的,请勾选[answer](http://stackoverflow.com/ a/41093864/1610034) – Saurabh

+0

是的 - 我有正确的''''这个'''范围。我认为它找到了正确的元素,但石匠没有正确加载,这就是为什么我看到这个错误... – Gagan