2017-01-20 13 views
3

モバイルWebアプリケーションを作成しており、予定を作成してMySQLサーバーに保存するフォームがあります。ユーザーIDを非表示にする必要があります。私はすでにng-initでそれを持っています。私はそれを取得し、それをHTMLに配置するために使用することができるコントローラがあります。私はanglejsでそれほど良くはありません。私は主にすべてのものとjavascriptのいくつかのためにPHPを使用します。どんな援助も感謝します。ng-valueを使用してMySQLのユーザーIDを投稿するには

これは私のフォームです。

////////////////// userIdCtrl Controller ////////////////////// 
app.controller('userIdCtrl', function ($scope) { 
    $scope.init = function (userid, id) { 

     $scope.id = id; 
     $scope.userid = userid; 

    }; 
}); 
//////////// appointment post Controller/////////////////// ////////// ////////// ////////// ////////// ////////// ////////// ////////// ////////// ////////// //// 
app.controller('appointmentPostCtrl', function ($scope, $http) { 

$scope.postData = function() { 

    $scope.message = ""; 
    var error = 0; 

/*---------------- this is the part that is no working return as empty------ */ 
    if ($scope.user == "" || $scope.user == null) { 
     error = 1; 
    } 
/*--------------------------------------------------------------------- */ 


    if ($scope.especialidad == "" || $scope.especialidad == null) { 
     error = 2; 
    } 
    if ($scope.facilidad == "" || $scope.facilidad == null) { 
     error = 3; 
    } 
    if ($scope.fecha == "" || $scope.fecha == null) { 
     error = 4; 
    } 
    if ($scope.hora == "" || $scope.hora == null) { 
     error = 5; 
    } 

    /*---- Data is validated ------ */ 

    if (error == 0) { 

     var request = $http({ 
      method: "post", 
      url: "https://www.xxxxxxxx.com/angPost.php", 
      data: { 
       user: $scope.user, 
       especialidad: $scope.especialidad, 
       facilidad: $scope.facilidad, 
       fecha: $scope.fecha, 
       hora: $scope.hora 
       }, 
       headers: { 
        'Content-Type': 'application/x-www-form-urlencoded' 
       } 
      }); 
      /* Check whether the HTTP Request is Successfull or not. */ 
      request.success(function (data) { 
       $scope.message = "" + data; 
      }); 
     } else { 
      $scope.message = "You have Filled Wrong Details! Error: " + error; 
     }; 
    }; 
}); 

をMySQLへ

<div class="login-form" ng-controller="userIdCtrl" ng-init="init('<? echo $usernameid; ?>','<? echo $usernameid; ?>')"> 
    <div class="center" style="margin:5px;color:white;"> 
     <h2>Registro</h2> 
     <form role="form" name="registro" ng-controller="appointmentPostCtrl"> 
     <div class="form-group"> 
      <div class="col-md-9 col-sm-9 col-xs-9"> 
       <select ng-model="especialidad" class="styled-select" required> 
        <option value="">Especilidad</option> 
        <?php echo $especialidades ?> 
       </select> 
      </div> 
     </div> 
     <div class="form-group"> 
      <div class="col-md-9 col-sm-9 col-xs-9"> 
       <select ng-model="facilidad" class="styled-select" required> 
        <option value="">Facilidad</option> 
        <?php echo $facilidades ?> 
       </select> 
      </div> 
     </div> 
     <br> 
      {{ userid }} <!--- test that it works ----->>> 
     <input ng-model="user" ng-value="{{ userid }}"> <!--- actual part that doesn't works it returned empty----->>> 
     <input type="date" ng-model="fecha" class="styled-select" style="width:40%; float:left;"> 
     <input type="time" id="timeInput" name="timeInput" ng-model="hora" placeholder="HH:mm:ss" min="08:00:00" max="17:00:00" required /> 
     <br><br> 
     <div style="margin-top:50px;"> 
      <button ng-click="postData()" class="button button--large " style="background-color:#6CBA45;">Registrar</button> 
      <ons-button modifier="quiet" class="forgot-password" ><a style="text-decoration:none;color:white;" href="login.php">Cancelar</a></ons-button> 
      <span id="message">{{ message }}</span> 
     </div> 
     </form> 
    </div> 
</div> 

コントローラuseri IDに対して1つのポストを扱う他のは、私は、角度のロジックで何か間違ったことか、私はリソースが不足していますでしょうか? yコントローラを1つだけ作成しようとしていて、どちらも動作しません。これは私がエラーハンドルを得ることができる最も近いです。私は私のルートか多分サービスが必要と思うか。いくつかの光が必要です。ありがとう。

+0

は= 'NG値と '' NG値= "{{ユーザID}}" を置換してい"userid"は問題を解決しますか? –

+0

私はちょうどそれを試みたが、私が何かを書かない限り、まだ空を返す。しかし、私はそれも隠されている必要があるかもしれないと推測しているかもしれないが、おそらくコントローラーで何かを作るが、私はまだ分かっていない。 –

答えて

1

まずHTMLマークアップからこれを削除します。

<input ng-model="user" ng-value="{{ userid }}"> 

その後でuseridをラップしてみてください親コントローラ上のオブジェクト:次いで

app.controller('userIdCtrl', function ($scope) { 
    $scope.init = function (userid, id) { 
     $scope.postObj = { 
      id: id 
      userid: userid 
     }; 
    }; 
}); 

、以下のように、子コントローラを変更:

if (error == 0) { 

    var request = $http({ 
     method: "post", 
     url: "https://www.ivan-montes.com/websites/MPC_App/php/angPost.php", 
     data: { 
      user: $scope.postObj.userid, // this line should do it! 
      especialidad: $scope.especialidad, 
      facilidad: $scope.facilidad, 
      fecha: $scope.fecha, 
      hora: $scope.hora 
      }, 
      headers: { 
       'Content-Type': 'application/x-www-form-urlencoded' 
      } 
     }); 
     /* Check whether the HTTP Request is Successfull or not. */ 
     request.success(function (data) { 
      $scope.message = "" + data; 
     }); 
    } else { 
     $scope.message = "You have Filled Wrong Details! Error: " + error; 
    }; 
}; 
+0

私はこれを試して理論的にはうまくいくはずです。私は値を渡すが、何かの理由で私は値を "隠し" doesntの仕事を置く場合comethingを書く場合。私が必要とする依存関係になるかもしれないと思っています。 –

+0

テキストフィールドと非表示フィールドを分割すると機能しますか?私は上記のように答えを更新しました。 - これは実際には何の違いもありませんが、試してみる価値はあると思います。 –

+0

同じでした。それは私に空の価値を与えている。 –

0

これはng-value="userid"を使用してください。 ng-valueに中括弧は必要ありません。

app.controller('userIdCtrl', function ($scope, $rootScope) { 
    $scope.init = function (userid, id) { 

    $scope.id = id; 
    $rootScope.userid = userid; // around the application you can get this id. no more code 

}; 

});

または

<input ng-model="user" ng-value="$parent.userid"> 

または

app.controller('userIdCtrl', function ($scope) { 
$scope.init = function (userid, id) { 

    $scope.id = id; 
    // $scope.userid = userid; 
    $scope.$broadcast('userID', userid); 

    }; 
}); 


app.controller('appointmentPostCtrl', function ($scope, $http) { 

$scope.postData = function() { 

    $scope.message = ""; 
    var error = 0; 
    $scope.$on('userID', function (event, data) { 
    $scope.userid = data; 
    }); 
}); 

https://docs.angularjs.org/api/ng/directive/ngValue

+0

他のコントローラのユーザーIDを使用して、その値をそこに配置します。私はこれをしましたが、私がそこに何かを書かない限り、まだ空に戻ります。コントローラ内にあれば何かできますか?私はアイデアを出しています。 –

+0

は$ rootScopeを使用します。更新されたansを参照してください。あなたのユーザーIDは毎回更新されますか? –

+0

私はここで別のミスをしているかもしれません。私はちょうどあなたのすべてのオプションを試して、どちらも私のために働いた。 $ parentScopeは$ parent.useridが番号を送信しない間に定義されていないというエラーを投げます。私は本当に何が起こっているのか分からない。 3番目のオプションはポストコントローラの動作を中断します。 –

関連する問題