2015-06-17 52 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