2016-05-10 14 views
0

javascriptメソッドからanglejsのコントローラーからメソッドを呼び出したいとします。だから私は関数を呼び出して呼び出しました。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); 
       }); 
      }); 
     } 
}); 

を次のようになります。したがって、「未定義のプロパティの行を読み取ることができません」というエラーが発生します。どのようにしてメソッドをsyncで呼び出すことができますか?

答えて

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

。これを説明してください。この関数に引数を渡すにはどうしたらいいですか? –

関連する問題