2016-06-09 53 views
1

我有以下的HTML代碼:角/離子:在HTML輸入字段無法訪問值

 <div class="list"> 
      <label class="item item-input"> 
       <input id="email" ng-model="email" type="text" placeholder="Email Address"> 
      </label> 
      <br> 
      <center> 
      <button class="button button-positive" ng-click="getData();"> Test </button> 
      </center> 
     </div> 

而下面的代碼角:

$scope.getData = function() { 
     var emailadd = document.getElementById('email'); 
     var url = "http://172.16.99.138/sendemail.php?emailaddress="+emailadd; 
     console.log(url); 
    }; 

然而,當我嘗試運行代碼,控制檯說它找不到變量。希望在這裏指導。

+0

'$範圍。電子郵件? – Pogrindis

+0

請您詳細說明 – user1650487

+0

請不要將dom元素用於這種綁定,這是使用角度,雙向綁定的主要觀點。 – Pogrindis

回答

2

注意:您的代碼有問題,因爲document.getElementById('email')會爲您帶來dom元素,這不是元素的value()

不過你應該做這個「角道」:

您需要定義模型在您的控制器像這樣:

$scope.email = { 
    text: '' 
    }; 

然後你就可以在HTML綁定像這樣:

<input type="email" name="input" ng-model="email.text" required> 

然後你就可以在你的方法使用$scope.email

$scope.getData = function() { 
    var url = "http://172.16.99.138/sendemail.php?emailaddress="+$scope.email.text; 
    console.log(url); 
}; 

ng-model Documentation

+0

工作得很好,謝謝 – user1650487

+0

我認爲,沒有必要創建對象只捕捉輸入值。它更有用,更美觀:) –

+0

@FationHadri假設用戶想將觀察點存儲在其他地方,或者事實上他擁有複雜的對象,或者他已經解決了服務中其他位置的價值,然後他必須在前視圖上更多地進行管理。在通常情況下,保持較少的觀點是很好的做法。 但是你的回答對於OP的問題也是完美的。 – Pogrindis

1

使用數據AngularJs結合的這種方式,通過電子郵件作爲函數的getData()參數

<div class="list"> 
      <label class="item item-input"> 
       <input id="email" ng-model="email" type="text" placeholder="Email Address"> 
      </label> 
      <br> 
      <center> 
      <button class="button button-positive" ng-click="getData(email);"> Test </button> 
      </center> 
     </div> 

而在你的控制器

$scope.getData = function(email) { 
     // var emailadd = document.getElementById('email');don't use this 
     var url = "http://172.16.99.138/sendemail.php?emailaddress="+email; 
     console.log(url); 
    };