2015-07-12 81 views
12

我试图从Angular控制器的HTML元素中获取值。从Angularjs控制器的HTML输入元素获取价值

<div ng-app="myApp" ng-controller="myControler"> 
<br /> 

<input id="Text1" type="text" runat="server" value="aValue"/

我的控制器:

var myApp = angular.module('myApp', []); 


myApp.controller("myControler", function ($scope, $document) { 

    var name = angular.element($('#Text1')).val(); 
    console.log(name); 

}); 

但名返回 “未定义” ......

请,我在做什么错?

回答

13

angular.element是jquery $的别名。

你可以访问该元素是这样的:angular.element('#Text1').val();

ng-model是要做到这一点,虽然角度的方式。您可以使用NG-INIT

<input id="Text1" type="text" runat="server" ng-model="inputVal" ng-init="inputVal='aVal'"> 

设置从ASP的价值,这可以从控制器使用范围console.log($scope.inputVal);

的jsfiddle例如访问:http://jsfiddle.net/n1oppeu2/

+0

当使用ng-model时,不需要value字段 –

+0

True!感谢您指出了这一点。更新我的答案。 –

+0

我为你增加了一个例子 –

5

为什么你需要的角度元素访问形式元素??

你可以通过绑定模型到它

这样

<input id="Text1" type="text" runat="server" ng-model="input.field1" /> 

控制器

$scope.input={ 
    field1:'' 
} 
+0

这个元素“Text1”将从代码隐藏的Asp.net表单中填充。然后,我将使用这是控制器内部的价值。如果我将它绑定到一个范围变量,控制器重置它的值。 – GCoe

+0

除非你使用控制器来设置ng-model到asp.net给出的内容 –

+0

@GCoe查看我关于从输入标签初始化模型的回答 –

0

采用了棱角分明元素选择#

<input id="Text1" type="text" runat="server" value="aValue" /> 

console.log(angular.element('#Text1').val()); 

设定值或

console.log(angular.element('#Text1')[0].value); 
+1

从控制器访问DOM是一种不好的做法。 DOM只能在指令内访问。 – mpolci