typescript - 将 markdown 值传递到 Vue.js 中的另一个页面
问题描述
我在视图 A 中有一个降价编辑器,它在当前视图中显示结果。我正在尝试将结果传递给另一个页面,即视图 B。在视图 A 中,存在一个按钮来将降价结果共享给视图 B。我正在使用 texarea 输入文本,并且我有 vue-markdown 可以转换文本区域输入到降价结果。我的计划是将相同的 vue-markdown 结果传递给 View B。
查看 A
<template>
<div class="boxA">
<form id="add-form" >
<div>
<button class="btn-share"@click="shareToPublic()">
Share To View B</button>
</div>
<div>
<input type="text" v-model:value="saveNotes.title">
</div>
<textarea v-model:value="saveNotes.text" name="content"></textarea>
</form>
<vue-markdown :source="saveNotes.text" >
</vue-markdown>
</div>
</template>
<script lang="ts">
import VueMarkdown from 'vue-markdown';
import {Component, Vue} from 'vue-property-decorator';
@Component({
components: {
VueMarkdown,
}
})
export default class MarkdownNotePad extends Vue {
noteList: any[] = [];
saveNotesDefault: NoteType = {
title: '',
text: '',
};
shareToPublic(){
const routData = this.$router.resolve({name:'ViewB'});
window.open(routData.href, 'viewB')
}
</script>
视图 B
<template>
<div class="container">
<div>
{{ View A markdown result }}
</div>
</div>
</template>
<script lang="ts">
import {Component, Vue} from "vue-property-decorator";
@Component
export default class SharePublic extends Vue {
}
解决方案
选项 1. 通过 window.open 传递数据
您可以将数据传递到使用window.open
.
更多信息在这里。
查看 A
shareToPublic() {
const routData = this.$router.resolve({name:'ViewB'});
var viewB = window.open(routData.href, 'viewB');
viewB.notes = saveNotes.text;
}
视图 B
notes: string | null = null;
mounted() {
this.notes = window.notes;
}
选项 2. 在组件之间传递数据
查看使用 Props 将数据传递给子组件以及如何使用带有@Prop的 vue-property-decorator 使用它们。
- 您需要在 ts 中引用组件 B:
import ComponentB from "./ComponentB.vue
;
- 您需要在标记中引用组件 B 并传递降价:
<component-b :markdown="saveNotes.text"></component-b>
- 您需要向组件 B 添加一个道具
@Prop(String) markdown: string | null = null;
选项 3. 在组件之间持久化数据
你应该看看Vuex,它可以让你在组件之间持久化数据。
据我了解你的问题。你会想做这样的事情:
用户导航到视图 A
用户键入一些文本
用户单击 共享
Vuex 存储文本
用户导航到视图 B
Vuex 读取存储的文本
索引.ts
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
const store = new Vuex.Store({
state: {
notes: null
},
mutations: {
updateNotes(state, notes) {
state.notes = notes;
}
}
});
new Vue({
el: '#app',
store: store,
})
查看 A
shareToPublic(){
this.$store.commit("updateNotes", this.saveNotes.text);
const routData = this.$router.resolve({name:'ViewB'});
window.open(routData.href, 'viewB')
}
视图 B
get notes() {
return this.$store.state.notes;
}
推荐阅读
- python - 如何使用 Spark 数据框获取范围的 2 个表之间的日期差异
- php - 在使用 mPDF 生成 PDF 时显示加载图像
- javascript - 角材料 - 为树添加分支线?
- java - 如何正确激活 Activity 之外的服务?
- karate - 使用空手道时如何根据输入查询参数计算签名?
- mobile - “测距”iBeacon 设备的数量会影响测距质量吗?
- java - 将对象列表转换为 Long 列表
- sonarqube - 由 GET api/measures/component VS GET api/issues/search 衡量的技术债务
- scala - 在部分初始化对象后使用命名参数
- postgresql - 带有查询的仅插入 RDBMS 的性能优化