AngularJS数据绑定查询

时间:2014-04-23 06:35:21

标签: javascript angularjs data-binding

这是一个nooob问题 - 就像我今天开始学习Angular一样。我正在Angular JS in 30 mins

上学习本教程

这个想法是在Angular中设置基本数据绑定。代码显示一个输入框,并显示(更新)与其相邻的框中键入的内容。来自Java世界和Spring MVC背景,只要代码如下,它就非常有意义:

的index.html

<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Test Angular</title>
<script type="text/javascript" src="angular.min.js"></script>
<script type="text/javascript" src="app.js"></script>
<script type="text/javascript" src="maincontroller.js"></script>
</head>
<body>
 <div id="content" ng-app="SampleAngular" ng-controller="MainController">
  <input type="text" ng-model="inputVal">{{ inputVal }}
 </div>
</body>
</html>

app.js

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

maincontroller.js

app.controller("MainController", function($scope){
$scope.inputVal = "";

}
);

但是,如果控制器有一个空白的身体,那么同样的事情仍然有效:

maincontroller.js

app.controller("MainController", function($scope){


}
);

据我所知,我无法在控制器中获取inputVal的值,但

a)为什么它仍然在视图中工作? b)显然,我没有ng-model指令中定义的相应模型'inputVal',并且没有错误/警告 - 恕我直言 - 相当于默默地失败。这是Angular的设计方式吗?这是大型应用程序中的潜在问题,并会使调试成为一场噩梦吗?

提前致谢。

2 个答案:

答案 0 :(得分:1)

以下内容来自ngModel的{​​{3}}:

  

注意:ngModel将尝试通过评估当前范围上的表达式绑定到给定的属性。如果该范围内的属性尚未存在,则将隐式创建该属性并将其添加到范围中。

答案 1 :(得分:0)

每当在视图中使用ng模型时,就会在控制器的范围内创建相应的模型值。在这种情况下,Angular不会抛出任何错误,因为这是它的默认行为。

$scope.inputVal = "";

更像是正在使用的变量的初始化。