不同控制器中的不同后空间处理

时间:2016-08-05 09:59:54

标签: javascript angularjs angularjs-directive

此控制器适用于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");
        }
    });

}

此控制器适用于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
        }
    });

}

我在第1页输入数据并移至page2.html并点击键盘的退格键, 虽然我在第二页,但是调用了test1Controller中的函数。

上述逻辑有什么问题..

使用上面的代码,调用两个不同控制器中的两个函数。

1 个答案:

答案 0 :(得分:1)

在通过执行

绑定控制器中的新事件之前解除所有keydown事件的绑定

对于控制器一

    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");
        }
    });

}

对于控制器2

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
        } 
    });
}