2016-02-29 82 views
0

如何從使用ng-model的輸入生成的對象中獲取值以便在腳本中使用,而不是同時使用鍵和值?

所以在每個位置相同的顯示接近解決這一問題,現在從我剛纔的問題在這裏Get a value from input to use in controller Angular JS

伸出我終於成功地防止在表中的單個輸入值(使用NG-重複)每行通過使用下面的代碼:

<input data-ng-model="newEmail[$index]" type="text" id="newEmail" maxlength="254" pattern="[a-z0-9._%+-][email protected][a-z0-9.-]+\.[a-z]{2,3}$" size="20" class="form-control" placeholder="{{user.email}}"> 

基本上,我需要從NG-模型進入了我的控制器,這我目前使用這樣使用的值:

$scope.newEmail = {}; 

$scope.updateProfile = function (profile) { 
    setTimeout(function() { 
     console.log('New email is: ', $scope.newEmail); 
    }, 1000); 
}; 

我得到的問題是它從輸入框中返回一個對象{1:'這裏輸入的任何文本'}。然後,我似乎無法從對象中獲取值來更新Firebase中的值,因爲它將密鑰和值寫入了我嘗試寫入的Firebase位置。

必須有一種超級簡單的方法來獲取我錯過的對象的值嗎?

+0

嘗試使用數組INSEAD對象'$ scope.newEmail = []' – jcubic

+0

圖例!!!它的工作原理和一些如此簡單的我應該嘗試過數組對象!謝謝 - 請發表回覆,我會接受! –

+0

我不敢說它不工作畢竟:(看起來好像我點擊第一行,輸入一個值,點擊我的按鈕,我會得到的值。但是,當我輸入後續值在輸入框,它表示空插槽.. –

回答

0

輸入框不返回對象。這是因爲您沒有像$scope.newEmail那樣分配ng-model,而是$scope.newEmail[$index]。這就是爲什麼當你得到$scope.newEmail時你得到{1: '...'},這是正確的。

我不知道什麼是你使用的情況下,但你爲什麼初始化newEmail爲對象,而不僅僅是:

$scope.newEmail = null 

,然後賦值爲:

ng-model="newEmail" 
+0

他使用'$ index',因此他可能使用'ng-repeat'。 – jcubic

+0

感謝您的快速響應。我試過$ scope.newEmail = null並且返回值爲空當我登錄到控制檯時,我也試過了'newEmail',但它仍然沒有運氣,我不得不初始化爲一個對象的原因是由於之前(現在和現在)嘗試之後的上述原因由於事實上我已經有了一個輸入框,其中包含一個來自用戶{{user.email}}的現有電子郵件的數組中的佔位符值。 –

+0

您可以製作一個pinkr或jsfiddle,以便我可以嘗試它我? – martin