我已经开始学习angular.js,但是我对理解数据绑定和范围有困难。Angular.JS数据绑定
这里是我的HTML文件:
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet"
href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" />
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js"> </script>
<title>Egghead</title>
</head>
<body data-ng-app="myApp">
1. <div>
NAME : <input type = "text" name = "name" data-ng-model="data.name"/>
Typed Name : <b>{{data.name}}</b>
<br><br>
EMAIL: <input type = "email" name = "email" data-ng-model="data.email"/>
Typed Email : <b>{{data.email}}</b>
</div>
2. <div data-ng-controller="firstController">
NAME : <input type = "text" name = "name" data-ng-model="data.name"/>
Typed Name : <b>{{data.name}}</b>
<br><br>
EMAIL: <input type = "email" name = "email" data-ng-model="data.email"/>
Typed Email : <b>{{data.email}}</b>
</div>
3. <div data-ng-controller="secondController">
NAME : <input type = "text" name = "name" data-ng-model="data.name"/>
Typed Name : <b>{{data.name}}</b>
<br><br>
EMAIL: <input type = "email" name = "email" data-ng-model="data.email"/>
Typed Email : <b>{{data.email}}</b>
</div>
<script type="text/javascript" src="app.js"></script>
</body>
</html>
现在,当我有这个模块,我目前的HTML:
(function(){
var myApp = angular.module('myApp', []);
myApp.controller('firstController', function($scope, $rootScope) {
/*$rootScope.data = {name : "root", email : "[email protected]"};
$scope.data = {name : "Ishan", email : "[email protected]"};*/
});
myApp.controller('secondController', function($scope) {
/*$scope.data = {name : "Divyan", email : "[email protected]"};*/
});
})();
我做的任何文本框的任何变化说“的名字“投入反映并且无处不在。示例我在第二个控制器中使用name =“name”对输入文本进行了更改,第一个文本框中的值也会更改,但是当我从我的javascript文件中删除注释时,我在第二个控制器输入框不反映在第一个输入框中。为什么?
如果你的意思是它们没有在firstController中反映,那是因为$ scope是不同的。 firstController有他自己的作用域,secondController有他自己的作用域。如果你想从最糟糕的选项到最好的选项,你可以使用$ rootScope,嵌套控制器和调用父母或只使用服务 – jstuartmilne