2016-05-10 69 views
0

我想从javascript方法的angularjs的控制器中调用该方法。所以我用下面的函数来调用。AngularJS:Sync从javascript中调用角度控制器中的方法

function ValidateLogin(data) { 
    var currentUser = angular.element(document.getElementById('bdyIndex')).scope().SlateProject_GetCurrentUser(); 

    if (currentUser.rows.length > 0) { 
     //doing the stuff 
    } 
} 

控制器看起来就像因此,从 “SlateProject_GetCurrentUser”,如果执行条件得到结果之前,以下

angular.module('indexApp', []) 
    .controller('indexController', function ($scope, $http) { 
      $scope.SlateProject_GetCurrentUser = function() { 
       var db = app.db; 
       db.transaction(function (tx) { 
       tx.executeSql("SELECT * FROM dbSlateProject WHERE ACTIVE = 1", [], 
       function (tx, e) { 
        console.log('Fetched Active Slate Project!') 
        return e; 
       }, 
       function (tx, e) { 
        alert(e.message); 
       }); 
      }); 
     } 
}); 

。所以它会给出错误,因为“无法读取属性'行'的未定义”。我们如何通过同步来调用该方法。

回答

1

控制器:

angular.module('indexApp', []) 
.controller('indexController', function ($scope, $http) { 
     $scope.SlateProject_GetCurrentUser = function (callback) { 
      var db = app.db; 
      db.transaction(function (tx) { 
      tx.executeSql("SELECT * FROM dbSlateProject WHERE ACTIVE = 1", [], 
      function (tx, e) { 
       console.log('Fetched Active Slate Project!') 
       callback(tx) // is `tx` current user? replace it with current user if no 
      }, 
      function (tx, e) { 
       alert(e.message); 
      }); 
     }); 
    } 
}); 

你也可以像这样访问:您的帮助

function ValidateLogin(data) { 
    var currentUser = angular.element(document.getElementById('bdyIndex')).scope().SlateProject_GetCurrentUser(function(currentUser){ 
     if (currentUser.rows.length > 0) { 
     //doing the stuff 
     } 
    }); 
} 
+0

感谢。你能解释一下吗?我们如何传递参数给这个函数? –

相关问题