2016-05-05 55 views
1

試圖插入數據到sqlite數據庫和數據是靜態的,我通過它的功能,但ng點擊不工作。因爲我是新手,所以請詳細回答...提前致謝。ng點擊不調用函數 - 所有新角和離子

//this is my module 
     var db=null; 
     var myApp=angular.module('starter', ['ionic','ngCordova']) 

     .run(function($ionicPlatform,$cordovaSQLite) { 
      $ionicPlatform.ready(function() { 
      if(window.cordova && window.cordova.plugins.Keyboard) { 
       // Hide the accessory bar by default (remove this to show the accessory bar above the keyboard 
       // for form inputs) 
       cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true); 

       // Don't remove this line unless you know what you are doing. It stops the viewport 
       // from snapping when text inputs are focused. Ionic handles this internally for 
       // a much nicer keyboard experience. 
       cordova.plugins.Keyboard.disableScroll(true); 
      } 
      if(window.StatusBar) { 
       StatusBar.styleDefault(); 
      } 
      db = $cordovaSQLite.openDB({name:"my.db",location:'default'}); 
      $cordovaSQLite.execute(db,"CREATE TABLE IF NOT EXISTS user(id integer primary key, username text, password text)") 
      }); 
     }) 


//this is my controller 

myApp.controller('SignInCtrl',['$cordovaSQLite', function($scope, $cordovaSQLite) { 
    $scope.insert=function(username,password){ 
    alert("hii"); 
    var query="INSERT INTO user(username,password) VALUES(?,?)"; 
    $cordovaSQLite.execute(db.query,[username,password]).then(function(res){ 
     console.log("Insert ID ->" + res.insertId); 
    }, 
    function(err){ 
     console.error(err); 
    }); 
    } 
    $scope.select = function(username) { 
     var query = "SELECT username, password FROM user WHERE username = ?"; 
     $cordovaSQLite.execute(db, query, [password]).then(function(res) { 
      if(res.rows.length > 0) { 
       console.log("SELECTED -> " + res.rows.item(0).username + " " + res.rows.item(0).password); 
      } else { 
       console.log("No results found"); 
      } 
     }, function (err) { 
      console.error(err); 
     }); 
    } 
    }]) 

//this is my page 

<ion view view-title="Sign-In" name="Login-View"> 
     <ion content class="padding"> 
      <div class="list list-inset"> 
      <label class="item item-input"> 
       <input type="text" placeholder="Username" ng-model="data.username"> 
      </label> 
      <label class="item item-input"> 
       <input type="password" placeholder="Password" ng-model="data.password"></input> 
      </label> 
      </div> 
     </ion> 
     <button class="button button-block button-positive" ng-click="login(data)">Login</button> 
    </ion> 
     <br> 
     <a href="#/Signup" class="button button-block button-stable">Sign Up</a> 
     <a href="#/ForgotPassword" class="button button-block button-stable">Forgot Password</a> 
    <a href="#/orderpage" class="button button-block button-stable">Order page</a> 

    <button class="button button-block button-positive" ng-click="insert('ran','badu')">insert</button> 
    <button class="button button-block button-positive" ng-click="select('ran')">select</button> 

//this is my index page 

<body ng-app="starter"> 
    <ion-header-bar class="bar-positive"> 
     <h1 class="title">Billing system</h1> 
     <button class="button icon ion-navicon"></button> 
     <button class="button icon ion-search"></button> 
     </ion-header-bar> 
    <!-- <ion-content > --> 
    <!-- <P>I am in index</P> 
    <a href="#/Login">Loginpage</a> --> 

    <!-- </ion-content> --> 

    <ion-nav-view class="slide-left-right"></ion-nav-view> 
    </body> 


//this is my route 

.config(function($stateProvider,$urlRouterProvider) { 
    $stateProvider 
    .state('Login',{ 
     url:'/Login', 
     templateUrl:'templates/Login.html', 
     controller:'SignInCtrl' 

    }) 
    .state('Signup',{ 
     url:'/Signup', 
     templateUrl:'templates/Signup.html', 
     controller:'SignInCtrl' 
}) 
.state('ForgotPassword',{ 
     url:'/ForgotPassword', 
     templateUrl:'templates/ForgotPassword.html', 
     controller:'SignInCtrl' 
}) 

.state('orderpage',{ 
     url:'/orderpage', 
     templateUrl:'templates/orderpage.html', 
     controller:'SignInCtrl' 
}) 
     $urlRouterProvider.otherwise('/Login'); 

}) 

回答

1

你有一個錯誤與SignInCtrl聲明存在。更改這行代碼

myApp.controller('SignInCtrl',['$cordovaSQLite', function($scope, $cordovaSQLite) 

myApp.controller('SignInCtrl',['$scope','$cordovaSQLite', function($scope, $cordovaSQLite) 

這裏的問題是,你使用內聯依賴注入和順序非常重要

+0

感謝加入$範圍它進入功能,但它沒有插入數據。獲取錯誤「無法讀取未定義的屬性'事務」 – Ranendra

+0

將$ cordovaSQLite.execute(db.query,[username,password])更改爲$ cordovaSQLite.execute(db,query,[username,password])。你應該使用「,」而不是「。」。試試如果這能解決你的問題或是一個錯字錯誤 – Elka

+0

謝謝像charm.its一樣幫助很大,因爲我是新手。我剛開始離子三天back.please建議一些很好的鏈接來學習概念。 – Ranendra

0

看你的代碼登錄()方法不會在您的登錄控制器嘗試添加的登錄方法來控制

myApp.controller('SignInCtrl', ['$cordovaSQLite', function ($scope, $cordovaSQLite) { 
    $scope.insert = function (username, password) { 
     alert("hii"); 
     var query = "INSERT INTO user(username,password) VALUES(?,?)"; 
     $cordovaSQLite.execute(db.query, [username, password]).then(function (res) { 
      console.log("Insert ID ->" + res.insertId); 
     }, 
      function (err) { 
       console.error(err); 
      }); 
    } 
    $scope.select = function (username) { 
     var query = "SELECT username, password FROM user WHERE username = ?"; 
     $cordovaSQLite.execute(db, query, [password]).then(function (res) { 
      if (res.rows.length > 0) { 
       console.log("SELECTED -> " + res.rows.item(0).username + " " + res.rows.item(0).password); 
      } else { 
       console.log("No results found"); 
      } 
     }, function (err) { 
      console.error(err); 
     }); 
    } 

    $scope.login = function(data){ 
     //Add Login Logic ....:) 
     console.log(data) 
    } 
}]) 
+0

謝謝回答。我只是試圖通過點擊登錄頁面上的按鈕來插入數據。按鈕名稱是insert和function insert()。 – Ranendra