web-dev-qa-db-ja.com

angularでモデルに非表示の入力をバインドします

私は次のフォームを持っています:

<form name="frmInput">

    <input type="hidden" ng-model="record.usersId" value="{{user.userId}}"/>
    <input type="hidden" ng-model="record.userNameId" value="{{user.userNameId}}"/>
    <label for="fileNo">AccountId</label>
    <input id="fileNo" ng-model="record.fileNo" required/>
    <label for="madeSad">MadeSad</label>
    <input id="madeSad" ng-model="record.madeSadNo" required/>

    <button ng-disabled="!frmInput.$valid" ng-click="SaveRecord(record)">Accept</button>

</form>

record.fileNoおよびrecord.madeSadNo in SaveRecord関数ですが、record.usersIdおよびrecord.userNameId in SaveRecord関数。

どこで間違いを犯していますか?

非表示入力の値は正しいです。

32
MRB

非表示のフォームフィールドを持つことはAngularの方法ではありません。すべてのスコープ変数(フォームにない)は非表示変数として取得できるため、非表示フィールドはまったく必要ありません。

ソリューションについては、フォームを送信するときに、オブジェクト「record」に「user」を入力するだけです。

function SaveRecord(){
  $scope.record.usersId = $scope.user.userId;
  $scope.record.userNameId = $scope.user.userNameId;
  http.post(url, $scope.record);
}

補足として、関数を呼び出す際に変数を記述する必要はありません。

<button ng-disabled="!frmInput.$valid" ng-click="saveRecord()">Accept</button>
40
CodingNinja

次のようなものを使用できます。

<input type="hidden" ng-model="record.usersId" value="{{user.userId}}" ng-init="record.usersId=user.userId"/>
22

非表示フィールドは二重バインディングをサポートしていません。

これを使用するだけです:

<input type="hidden" name="userId" value="{{user.userId}}"/> {{user.userId}}
<input type="hidden" name="UserNameId" value="{{user.userNameId}}"/> {{user.userNameId}}
3
Bappi Datta