这是一个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的设计方式吗?这是大型应用程序中的潜在问题,并会使调试成为一场噩梦吗?
提前致谢。
答案 0 :(得分:1)
以下内容来自ngModel
的{{3}}:
注意:ngModel将尝试通过评估当前范围上的表达式绑定到给定的属性。如果该范围内的属性尚未存在,则将隐式创建该属性并将其添加到范围中。
答案 1 :(得分:0)
每当在视图中使用ng模型时,就会在控制器的范围内创建相应的模型值。在这种情况下,Angular不会抛出任何错误,因为这是它的默认行为。
$scope.inputVal = "";
更像是正在使用的变量的初始化。