导航器警报功能第二次工作

时间:2013-12-26 13:48:24

标签: jquery angularjs cordova

单击时我有一个按钮我执行此功能:

$scope.sendPolicy = function(){
    // make server request and called this call back:
    navigator.notification.alert(
        "message",
        function(){
            $state.transitionTo('main', {
                Id: $scope.Id
                });
        },
        'title',
        'confirm');

警报弹出正常,但是当点击确认按钮时,警报会消失,就是这样。没有其他事情发生(应该触发向主屏幕的转换。)在警报被解除后,如果再次点击导致警报弹出的按钮,视图/页面传输正在被触发,我们弹回主页面,以及警报再次弹出。

问题是:

  1. 为什么确认按钮不会触发回弹/转移到主屏幕。
  2. 为什么另一次点击按钮会导致弹出/转移?
  3. 为什么这个额外的点击会再次触发警报?

1 个答案:

答案 0 :(得分:1)

  1. 我认为这是在角度范围之外获得确认时角度不更新的问题。您可能需要手动运行摘要/应用,因此角度可以更新范围。

  2. 再次单击该按钮时,angular正在运行更新,现在范围内有转换信息,但它也会再次调用警报,因为它将是一个单独的点击事件。

  3. 在2中解释。
  4. 要解决这个问题,我认为你需要在某个时候调用$ scope.apply(),或者像这样:

     $scope.sendPolicy = function(){
    // make server request and called this call back:
    navigator.notification.alert(
        "message",
        function(){
            $state.transitionTo('main', {
                Id: $scope.Id
                });
        if(!$scope.$$phase){$scope.$apply();}        
        },
        'title',
        'confirm');
    

    或者在警报功能结束时调用它。

    注意:您可以将其称为$ scope。$ apply(),但如果摘要已在进行中,则会抛出错误,因此调用此方法的安全方法是if(!$ scope。$$ phase) {$ scope。$ apply();}只有在没有进行的情况下才会被调用。