我正在使用 Ember Octane 版本,我想Route从子组件中调用一个操作。伪代码如下。
**Route**
export default class SomeRouter extends Route {
model() {
return data;
}
@action
refreshRoute() {
this.refresh();
}
}
**SomerRouter.hbs**
<ChildComponent> //Using child component here
**ChildComponent**
export default class ChildComponent extends Component {
@action
revert() {
//How do I invoke the "refreshRoute" on the SomeRouter from here?
}
}Run Code Online (Sandbox Code Playgroud)
在上述子组件的 revert 方法中,“this”指的是组件本身,但在 ember 的早期版本中,“this”指的是路由器,我可以在其中简单地调用 this.refresh()。那么我如何在 Ember Octane 中实现这一目标呢?非常感谢任何帮助。
有没有办法查明用户是否拒绝或允许访问 Firefox 中的媒体设备(例如:麦克风、相机)?。在 Chrome 中,我可以使用 navigator.permissions.query 进行检查,但这在 Firefox 中失败并显示“TypeError”。
navigator.permissions.query({name:"microphone"}).then(function(promise) {
if ( promise && promise.state ) {
console.log(promise.state); //"granted", "prompt" or "rejected"
}
});
//in Firefox, It throws the error "TypeError: 'name' member of PermissionDescriptor '' is not a valid value for enumeration PermissionName"
Run Code Online (Sandbox Code Playgroud)
由于某种原因,我无法使用 try catch 块捕获上述错误。所以我想知道为什么我无法在 try catch 块中捕获此错误以及是否有替代方法。
用例
我的应用程序具有语音识别功能。在用户遇到寻求访问麦克风的实际“系统对话框”之前,我需要显示“预先权限弹出”。这种“预许可弹出”背后的想法是向用户提供应用程序需要访问权限的上下文。如果用户已经授予/拒绝访问权限,则不需要预先许可弹出窗口。所以我需要检查麦克风的权限状态并在需要时显示弹出窗口。
我正在开发一个记录用户语音输入的网络应用程序。由于某种原因,在 ios safari 上需要花费很多时间才能通过 mediaDevices.getUsearMedia 获取用于录制的媒体流。我创建了以下测试页面来测量不同浏览器之间的时间延迟。如果有人能对此有深入的了解,我将非常感激。
IOS safari - 600 至 800 毫秒
Chrome 桌面版 - 4 毫秒
Chrome Android - 40 至 60 毫秒
<!DOCTYPE html>
<html>
<body>
<h1 style="margin: 100px">get user media time test</h1>
<div width="300px" height="300px" style="margin: 100px">
<button id="btn" style="height:100px; width:250px; font-size:25px;">call getUserMedia</button>
</div>
<script>
var btn = document.getElementById("btn");
btn.onclick = myFunction;
function myFunction() {
var time1 = new Date().getTime();
navigator.mediaDevices.getUserMedia({ video:false ,audio: true})
.then(function(stream) {
var time2 = new Date().getTime();
var diff = time2-time1;
console.log("delay …Run Code Online (Sandbox Code Playgroud)