Materialize js在第一次加载时不起作用

时间:2018-06-11 12:04:32

标签: javascript css vue.js materialize

我正在尝试制作一个Vue.js SPA聊天应用,我遇到了Materialise CSS和JS的问题。 JS不能在第一次加载时工作,并使其工作我必须重新加载页面。由于控制台中没有错误,因此无法确定问题所在。

这是index.html:

<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0-beta/css/materialize.min.css">

<title>Chat</title>
</head>
<body>
<div id="app"></div>
<!-- built files will be auto injected -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0-beta/js/materialize.min.js"></script>
</body>
</html>

<html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1.0"> <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0-beta/css/materialize.min.css"> <title>Chat</title> </head> <body> <div id="app"></div> <!-- built files will be auto injected --> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0-beta/js/materialize.min.js"></script> </body> </html>

以下是问题所在的组件:

 <template>
  <div class="container reg">
  <h1 class="text-centered">Registrace</h1>
 <form @submit.prevent="register">
   * Another form fields *
 <div class="input-field col s12">
  <select>
   <option value="" disabled selected>Choose your option</option>
   <option value="1">Option 1</option>
   <option value="2">Option 2</option>
   <option value="3">Option 3</option>
  </select>
  <label>Materialize Select</label>
 </div>
  <input type="submit" value="Registrovat" />
 </form>
 <router-link :to="{ name: 'login' }">
   <button>Login</button>
 </router-link>
</div>
</template>
<script>
 document.addEventListener('DOMContentLoaded', function() {
 var elems = document.querySelectorAll('select');
 var instances = M.FormSelect.init(elems, null);
  });
 export default {
    data: function () {
        return {

        };
    },
    methods: {
      Register () {
      }
    }
}
</script>

1 个答案:

答案 0 :(得分:0)

似乎使用外部jQuery库是Vue.js的反模式,因为

  

Vue.js和jquery争论如何处理DOM。

See the last comment here

我认为您必须通过npm安装它,然后在编译过程中手动插入cssjs,因为我遇到了与materialize和ionic 3相同的问题。

如果你不花时间找到一种解决方法来手动导入,编译过程中的cssjs会更好地使用更多Vue友好的解决方案{{3 }}

我修改了我的答案以添加另一个有用的链接。该库使用Materialise css和Vue.js构建UI like this