javascript - 原型返回我的函数而不是返回值
问题描述
我想通过从 main.js 调用我的原型来做到这一点
Vue.prototype.subtitlePage = function () {
var path = this.$route.path;
var array_path = path.split('/');
var subtitle = "<ul class='subtitle'>";
var index;
for (index = 1; index < array_path.length - 2; index++) {
subtitle += "<li>" + array_path[index] + "</li> >>";
}
subtitle += "<li>" + array_path[index] + "</li><ul>";
return subtitle;
}
我在构建屏幕时以这种方式调用我的函数
<p class="indextitle">Subir Nova Redação</p>
<p v-html="subtitlePage"></p>
但是屏幕上出现的文本不是函数中挂载的html返回,而是我的函数的代码
function () { var path = this.$route.path; var array_path = path.split('/'); var subtitle = "
"; var index; for (index = 1; index < array_path.length - 2; index++) { subtitle += "
" + array_path[index] + "
>>"; } subtitle += "
" + array_path[index] + "
"; return subtitle; }
有谁知道我做错了什么以及我必须在代码中更改什么才能出现在我在函数中设置的字幕中?
解决方案
v-html
需要一个 string,而给定一个函数,这会导致字符串化的函数输出。它应该是:
<p v-html="subtitlePage()"></p>
在实践中,绝不应该对用户定义的数据执行此操作。
在您的网站上动态呈现任意 HTML 可能非常危险,因为它很容易导致 XSS 攻击。仅在受信任的内容上使用 v-html,而不是在用户提供的内容上。
URL 在这里是用户定义的数据。它可以由罪魁祸首定制,以评估用户端的任意 JS。
正确的方法是为面包屑创建一个组件并将其输出:
<li v-for="pathSegment in pathSegments">{{pathSegment}}</li>
如果一个段可能包含 URL 编码的符号(本示例中的空格和非 ASCII 字符),则需要另外转换段decodeURIComponent
(这在原始代码中未涵盖,这将是 的主要危险v-html
)。
推荐阅读
- google-cloud-platform - gcloud 为 .npmrc 设置环境变量
- excel - Excel - 如果具有相同 ID 的多行都“是”,如何获得结果
- c++ - 如何使用 if 语句修复输出 2 行而不是 1 行的代码
- swiftui - hstack 中的组可以让 vstack spacer() 出错,任何人都可以告诉我为什么
- django - 如何从 django 服务器发送图像以响应本机?
- r - 使用 tidymetrics、shinymetrics 和 shinybones 的闪亮应用程序。如何整合和渲染细节级别的数据
- python - 过滤具有大量列的 Pandas 数据框
- vb.net - 我在 vb.net 中有内存泄漏,除了使用垃圾收集器之外,我该如何解决这个问题?
- java - 我怎样才能使一个类粒子跟随另一个类粒子
- javascript - 使用 Vue.observable 创建一个带有属性 getter 的迷你商店