【发布时间】:2017-11-08 23:30:15
【问题描述】:
我在 Vue.js 中有以下单个文件组件。
plasmid 标签原本是由 angularplasmid.complete.min.js 文件呈现的,但出于某种原因并非如此。这是在组件中导入库的正确方法吗?
我正在重组一个旧的 Vue 项目以进行更好的设计,但我知道 plasmid 标记在此处呈现(不使用单个文件组件):https://github.com/asselinpaul/dnaviewer/blob/master/app/index.html
非常感谢任何帮助。
<template>
<div id="DNA Plasmid">
<h3>Plasmid Visualisation</h3>
<div class="section">
<plasmid id='p1' plasmidheight="800" plasmidwidth="800" v-bind:sequencelength="sequenceLength">
<plasmidtrack id='t1' radius="200" width="55">
<trackmarker v-for="(bound, index) in bounds" class='marker' v-bind:start="bound.start" v-bind:end="bound.end" v-bind:style="{ fill: bound.color }" v-bind:key="bound.start">
<markerlabel v-bind:text="bound.name" v-bind:vadjust='bound.vadjust' style='font-size:12px'></markerlabel>
</trackmarker>
<tracklabel v-bind:text="name" style='font-size:25px;font-weight:bold'></tracklabel>
</plasmidtrack>
</plasmid>
</div>
</div>
</template>
<script>
import './angularplasmid.complete.min.js'
...
【问题讨论】:
-
这看起来像一个 Angular 库,我希望您将它与 Vue 结合起来会遇到问题,因为 Angular 和 Vue 都会在模板上发生争执。
-
@BertEvans 我告诉 Vue 忽略与角度位有关的模板
Vue.config.ignoredElements = ['plasmid', 'plasmidtrack', 'trackscale', 'trackmarker', 'tracklabel', 'markerlabel' ] -
当然,但是由于这是一个组件,因此当 Angular 初始化时,页面上可能不存在 HTML。
-
@BertEvans 我不知道我是使用 Angular 还是仅使用可视化代码(来自这里:angularplasmid.vixis.com/usage-basic.php),因为代码的角度部分(操作 dom 中的字段)由Vue.js。第一个答案的评论中有一个示例,说明它是如何使用不同结构的 Vue.js 程序工作的。
-
在Vue中使用单个文件组件(或任何组件),模板不会立即呈现到页面,它发生在页面加载之后。在您的预组件化示例中,无论您导入的脚本做什么,HTML 在页面加载时都可用。但是,对于该组件,HTML 在 页面加载后 之前不可用,我怀疑您导入的脚本是否正在监视页面的更改以了解何时需要呈现图表。所以你需要一些东西来初始化导入的脚本在组件渲染之后。
标签: vue.js vuejs2 vue-component