2013-11-28 49 views
30

我有以下形式:綁定隱藏輸入到模型中的角

<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> 

SaveRecord功能得到record.fileNorecord.madeSadNo,但我不SaveRecord功能得到record.usersIdrecord.userNameId

我在哪裏犯錯?

隱藏輸入的值是正確的。

+3

爲什麼下降投票? :) – MRB

回答

36

具有隱藏的表單字段是不是角的方式。根本不需要隱藏字段,因爲所有範圍變量(不在表單中)都可以作爲隱藏變量。

至於解決,提交表格時,只需填充對象「記錄」與「用戶」:

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> 
+0

是的,最後我做了這個,用類似的方法 – MRB

+2

我不知道這是否是一個準確的說法..「隱藏變量不是角度方式」..如果我有一個授權架構,並根據用戶進入網站,隱藏的輸入是什麼決定了價值?我不想在我的JavaScript中做任何授權,但讓我的看法來處理它。 – sksallaj

3

隱藏字段不支持雙重綁定。

只要使用此:

<input type="hidden" name="userId" value="{{user.userId}}"/> {{user.userId}} 
<input type="hidden" name="UserNameId" value="{{user.userNameId}}"/> {{user.userNameId}} 
+0

但我想''用戶ID和'用戶名ID'作爲'保存記錄(記錄)'記錄'參數的字段' – MRB

+0

我已經更新了我的答案。現在請嘗試。 –

+0

不起作用。爲什麼命名屬性? – MRB

20

您可以使用這樣的事情:

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

我喜歡這個。當然,使用隱藏字段不是必需的,因爲我可以從範圍填充目錄....但是當一個頁面和所有其他表單變量來自表單元素時...隱藏字段有助於保持代碼清潔和一致 –

+0

ng-init是關鍵,我不想填充我的控制器/服務中的字段,因爲這對重用性沒有幫助。就我而言,我在兩個地方使用了一個提交函數,其中所有數據都來自表單,爲什麼使函數變得醜陋? :) – a7omiton