2015-06-17 50 views
0

我想通過ng-click獲得div元素值,但它帶有一個警告undefined。 我的HTML是Angular js得到div元素問題

<div ng-model='myName'>this is my name</div> 
<br/> 
<input type="button" value="Show Name" ng-click="showName()"/> 

腳本

$scope.showName = function(){ 
     var nameOne = $scope.myName; 
     alert(nameOne); 
    } 

如何來解決這個問題。謝謝。

+0

您不能使用ng-model與div元素:https://docs.angularjs.org/api/ng/directive/ngModel – Fals

+0

好的謝謝。那麼如果我使用'

this is my name
'來獲取div元素。在jQuery中它很簡單'$('。myName')。text()'。 –

+0

你不應該在你的控制器裏面使用jQuery。你需要一些與View相關的邏輯,創建一個指令。 – Fals

回答

0
<div>{{myName}}</div> 
<br/> 
<input type="button" value="Show Name" ng-click="showName()"/> 

腳本

$scope.showName = function(){ 
     var nameOne = $scope.myName; 
     alert(nameOne); 
    } 
0

其實NG-模式應該是對投入使用。

<input type="text" ng-model="myName"> 

這將創建一個$ scope.myName var並將其綁定到輸入內容。

如果intitialize在JavaScript的MYNAME,並希望它顯示在這個div你應該使用這樣的語法:

JS

$scope.myName = "Ben"; 

HTML

<div>This is my name : {{myName}}</div> 

在這兩種情況下,點擊按鈕不會顯示未定義,除非在點擊之前沒有初始化它(第二個例子)。

希望它有幫助。

2

ngModel指令不能用普通的div被使用(除非該元素是一個定製表單控件),見https://docs.angularjs.org/api/ng/directive/ngModel

<div ng-init="myName = 'this is my name'">{{ myName }}</div> 
<br/> 
<input type="button" value="Show Name" ng-click="showName()"/> 

Plunker here

編輯:使用ngInit以外的ngRepeat被認爲是一個bad practice,控制器初始化範圍變量

$scope.myName = 'this is my name'; 
$scope.showName = function() { 
    alert($scope.myName); 
} 
+0

@downvoter,請詳細解釋 – sbedulin

+0

ngModel可以用在任何元素中,在正常情況下ngInit不應該用於初始化範圍變量,這就是控制器的用途。 – Wawy

+0

@Wawy「ngModel指令使用」將輸入,選擇,textarea(或自定義窗體控件)綁定到作用域上的屬性,因此它可以被使用,但是什麼也不做。顯示ngInit是爲了舉例,但我同意你的意見,即myName應該初始化爲int – sbedulin