javascript - 不同 Controller 中不同的后退空间处理

标签 javascript angularjs angularjs-directive

此 Controller 适用于 page1.html

test1.controller('test1Controller', function($scope,$document) {

$document.on('keydown', function(e){
        if(e.which === 8 && e.target.nodeName !== "INPUT" && e.target.nodeName !== "SELECT"){ 
           confirm("you are In Home page");
        }
    });

}

此 Controller 适用于 page2.html

test2.controller('test2Controller', function($scope,$document) {

$document.on('keydown', function(e){
        if(e.which === 8 && e.target.nodeName !== "INPUT" && e.target.nodeName !== "SELECT"){ 
           //HERE CODE LOGIC SHOULD COME TO PREVIOUS PAGE
        }
    });

}

我在page1中输入数据并移动到page2.html并单击键盘的退格键, 虽然我在第二页,但 test1Controller 中的函数正在被调用。

上面的逻辑有什么问题..

使用当前上述代码,两个不同 Controller 中的函数都被调用。

最佳答案

在 Controller 中绑定(bind)新事件之前,请取消绑定(bind)所有 keydown 事件

对于 Controller 一

    test1.controller('test1Controller', function($scope,$document) {

    $document.off('keydown')

    $document.on('keydown', function(e){
        if(e.which === 8 && e.target.nodeName !== "INPUT" && e.target.nodeName !== "SELECT"){ 
           confirm("you are In Home page");
        }
    });

}

对于 Controller 二

test2.controller('test2Controller', function($scope,$document) {

    $document.off('keydown')

    $document.on('keydown', function(e){
        if(e.which === 8 && e.target.nodeName !== "INPUT" && e.target.nodeName !== "SELECT"){ 
            //HERE CODE LOGIC SHOULD COME TO PREVIOUS PAGE
        } 
    });
}

关于javascript - 不同 Controller 中不同的后退空间处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38786485/

相关文章:

javascript - 根据条件为 Odoo10 中的复选框添加颜色

javascript - 字符串匹配 angularjs/javascript 最多 2 个字符

javascript - 无法使用 Angular 从 HTML View 获取值到 Controller 。解决方案返回$scope变量未定义

angularjs - 如何将自定义指令动态添加到 div 元素?

angularjs - 在 angularjs 中使用 $broadcast/$on 触发事件的最佳实践/替代方法是什么?

javascript - 带有 v-model 的 Vuex 输入不是 react 性的

javascript - 在 Vue 组件中运行回调并在更改状态之前等待结果

javascript - Angularjs ng 重复 - 按 $index 删除

javascript - 类型错误 : Cannot read property 'slice' of undefined

angularjs - 使用 Symfony2 提供 AngularJS 部分服务的最佳方式是什么?