小编Mur*_*lli的帖子

如何从 Ember Octane 中的子组件调用当前路由器中的操作?

我正在使用 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 中实现这一目标呢?非常感谢任何帮助。

ember.js ember-octane

6
推荐指数
1
解决办法
1161
查看次数

如何在 FireFox 中检查访问麦克风的权限是否已被用户拒绝

有没有办法查明用户是否拒绝或允许访问 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 块中捕获此错误以及是否有替代方法。

用例

我的应用程序具有语音识别功能。在用户遇到寻求访问麦克风的实际“系统对话框”之前,我需要显示“预先权限弹出”。这种“预许可弹出”背后的想法是向用户提供应用程序需要访问权限的上下文。如果用户已经授予/拒绝访问权限,则不需要预先许可弹出窗口。所以我需要检查麦克风的权限状态并在需要时显示弹出窗口。

html javascript firefox getusermedia mediadevices

5
推荐指数
1
解决办法
1988
查看次数

与其他浏览器相比,为什么“mediaDevices.getUserMedia”在 ios safari 上速度较慢?

我正在开发一个记录用户语音输入的网络应用程序。由于某种原因,在 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)

html javascript mobile-safari getusermedia mediadevices

4
推荐指数
1
解决办法
2454
查看次数