我正在尝试获取一个vue组件,以便在我的网站上发生不同事件时动态地向屏幕阅读器发布信息.
我有它的工作,点击一个按钮将填充一个aria-live="assertive"和role="alert"文本的跨度.这在第一次正常工作,但是,单击具有类似行为的其他按钮会导致NVDA在读取新文本之前两次读取前一个文本.这似乎是在vue中发生的,但是没有使用jquery的类似设置,所以我猜它与vue呈现给DOM的方式有关.
我希望有一些方法可以解决这个问题,或者更好的方法来向用户阅读没有此问题的文本.任何帮助是极大的赞赏.
这是我在工作代码沙箱中设置的一个简单组件,用于显示我遇到的问题(导航到代码的组件/ HelloWorld.vue) - 注意:根据下面的答案,此沙箱已更改.该组件的完整代码如下:
export default {
name: "HelloWorld",
data() {
return {
ariaText: ""
};
},
methods: {
button1() {
this.ariaText = "This is a bunch of cool text to read to screen readers.";
},
button2() {
this.ariaText = "This is more cool text to read to screen readers.";
},
button3() {
this.ariaText = "This text is not cool.";
}
}
};Run Code Online (Sandbox Code Playgroud)
<template>
<div>
<button @click="button1">1</button>
<button @click="button2">2</button> …Run Code Online (Sandbox Code Playgroud)这里有一个相当简单的问题。我正在尝试创建一个像这样的通用类型:
export type RenderObject<TMeta = any> = {
meta?: TMeta;
render: (meta: TMeta) => JSX.Element;
}
Run Code Online (Sandbox Code Playgroud)
我希望TMeta在将对象转换为该类型时无需将其传递到 RenderObject 通用参数中即可推断类型,或者使用额外的函数包装器或类构造函数来推断该TMeta类型。像这样:
const thing: RenderObject = {
meta: { foo: 'bar' },
render: (meta) => <i>{meta.foo}</i>,
}
Run Code Online (Sandbox Code Playgroud)
然而,这只是将渲染函数中的TMetaas视为any,而不是{ foo: string }从赋值中推断类型。
我想做的事情可能吗?我需要避免额外的函数或类包装器,因为这必须保持高性能并避免向堆栈添加任何额外的调用。抱歉,如果这个问题已经在其他地方得到了回答,我似乎无法在任何地方找到这个确切的问题,但也许我的搜索与太多其他类似但不同的问题重叠。
提前致谢!
我正在研究 API 层新架构解决方案的选项。我们决定使用 dotnet core,并且希望将应用程序功能的每个部分分解为微服务。我们使用 azure devops 来处理构建/测试/发布 CI/CD 工作流程。
根据广泛的分析,我估计我们当前的后端解决方案可以分为 10-15 个独立的微服务。不幸的是,其中大多数都有类似的后端依赖关系,但我仍然想将它们分开,这样我们就可以隔离单元测试,拥有更小的 CI/CD 足迹,并让项目从关注点的牢固分离开始。
然而,与此同时,我希望避免使用 10-15 个不同的 git 存储库、解决方案和 CI 流程来促进此工作流程。对于开发的简化来说,这将成为一场噩梦,因为开发人员需要定期更改工作空间(任何 IDE 中的“最近打开”列表都会完全溢出!)、维护和同步 10-15 个 CI/CD。
在我看来,理想的结果是单一解决方案、git 存储库和构建流程,其中每个微服务作为解决方案中的一个项目分开。当代码提交时,我想在 Azure DevOps 中启动一个进程,该进程只会构建/测试/部署那些在提交中更改的服务。
这是可能的还是我在做梦?我在谷歌上运气不佳,但也许我没有为此输入正确的短语......
提前致谢!
我正在使用 vue cli 3 构建一个 chrome 扩展。我的基础知识运行良好,但我希望还可以通过构建过程运行我的内容和后台 javascript,而不是仅仅将它们放入我的公共文件夹中并将其复制到区。这主要是为了让我可以使用导入/导出来清理我的文件结构。
我能够将它们添加为 vue 配置中的新“页面”,即使没有 html 模板文件,它们也会正确构建并移动到 dist 中。
问题是,然后他们将缓存破坏字符串附加到其文件名中,因此我无法在扩展清单中引用它们。例如,background.js变为background.d8f9c902.js
是否可以告诉 vue 配置某些“页面”不应被缓存清除?这里的文档似乎没有将其公开为参数。
提前致谢!
javascript ×2
vue.js ×2
.net-core ×1
azure-devops ×1
git ×1
nvda ×1
typescript ×1
vue-cli ×1
vue-cli-3 ×1
wai-aria ×1