AngularJS中的双向数据绑定

双向数据绑定

双向数据绑定是指两个方向:从数据模型到视图,从视图到数据模型。AngularJS是一个MVC框架,控制器去修改数据模型,数据模型的变更会反应到视图上。视图上发生了数据的变化,是否能够自动同步到数据模型上呢?

example.html


  
    
  
  
    

{{greeting.text}},Angular

app.js

angular.module('helloApp',[])
  .controller('helloCtrl',['$scope', function($scope) {
	  $scope.greeting = {
			  text : 'hello'
	  }
  }]);

运行结果:

但是,使用这种方式进行绑定,当网页刷新过快或者网速不好时,用户有可能看到{{greeting.text}}。AngularJS提供了ng-bind来进行绑定。

将上面的example.html修改如下:


  
    
  
  
    

,Angular

这时狂刷页面或者网络不好时,不会出现上述情况。

什么时候使用{{ }},什么时候使用ng-bind?

       AngularJS本身的库在加载完了之后,整个页面都已经归Angular来管了。这时候使用双括号就不会有很大的问题。也就是说,在首页也就是index.html上如果有数据绑定,用ng-bind去绑定。后续的页面可以用双括号{{ }}。

双向数据绑定的场景:form表单

example.html



  
    
    
    
    
  
  
    
双向数据绑定

 form.js

angular.module('userInfoModule',[])
  .controller('userInfoCtrl',['$scope',function($scope){
	  $scope.userInfo = {
			  email : "[email protected]",
			  password : "123456",
			  autoLogin : true
	  };
	  
	  $scope.getFormData = function() {
		  console.log($scope.userInfo);
	  }
  }])

运行结果:

AngularJS中的双向数据绑定_第1张图片 

 点击“获取form表单的值”按钮,按f12看到控制台输出如下:

AngularJS中的双向数据绑定_第2张图片 

当修改了邮箱中的值时, 点击“获取form表单的值”按钮,按f12看到控制台输出如下:

AngularJS中的双向数据绑定_第3张图片

可以看到,视图上的修改会自动同步到数据模型上。

通过程序修改视图的数据,前后对比如下:

AngularJS中的双向数据绑定_第4张图片

重置form表单的值如下:

AngularJS中的双向数据绑定_第5张图片 

双向数据绑定的场景:修改css样式

  example.html


  
    
    
  
  
    

测试CSS样式

css1.css

@charset "UTF-8";
.text-red {
	background-color : #ff0000;
}
.text-green {
	background-color : #00ff00;
}

 css1.js

angular.module('myCssModule',[])
  .controller('cssCtrl',['$scope', function($scope) {
	$scope.color = "red";
	$scope.setGreen = function() {
		$scope.color = "green";
	}
}])

运行结果:

点击按钮:

双向数据绑定的场景:修改css样式——使用ng-class

example.html


  
    
    
  
  
    
{{messageText}}

 ngClass.css

@charset "UTF-8";
.error{
	background-color : red;
}
.warning {
	background-color : yellow;
}

 ngClass.js

/**
 * 
 */
angular.module('ngClassModule',[])
  .controller('ngClassCtrl',['$scope', function($scope) {
	$scope.isError = false;
	$scope.isWarning = false;
	$scope.showError = function() {
		$scope.messageText = "This is an error";
		$scope.isError = true;
		$scope.isWarning = false;
	}
	$scope.showWarning = function() {
		$scope.messageText = "Just a warning,please carry on";
		$scope.isError = false;
		$scope.isWarning = true;
	}
}])

运行结果:

点击Simulate Error按钮:

点击Simulate Warning按钮:

 双向数据绑定的场景:控制标签的显示和隐藏ng-show、ng-hide

example.html


  
    
  
  
    
  • 平局

 ngShow.js

/**
 * 
 */
angular.module('ngShowModule', [])
  .controller('ngShowCtrl', ['$scope', function($scope){
	  $scope.menuState = {
			  show : false
	  }
	  $scope.toggleMenu = function() {
		  $scope.menuState.show = !$scope.menuState.show; 
	}
  }])

运行结果:

点击按钮:

AngularJS中的双向数据绑定_第6张图片

 

 

你可能感兴趣的:(AngularJS)