AngularJS学习笔记(五)

AngularJS双向数据绑定

ng-model与ng-bind指令

这两个指令是实现双向数据绑定的最主要的指令,区别如下:

ng-bind has one-way data binding ($scope –> view). It has a shortcut {{ val }} which displays the scope value $scope.val inserted into html where val is a variable name.

ng-model is intended to be put inside of form elements and has two-way data binding ($scope –> view and view –> $scope) e.g. .

总结来说就是ng-bind实现的是单向的数据绑定,我们可以在一个span标签中绑定一个数据项,让这个span标签中一直显示这个数据项的值。

而ng-model一般去实现双向的数据绑定,一般会用在表单输入中,比如input标签,我们不仅可以在input输入框中显示数据项的值,也可以通过input的输入来修改数据项的值。

实例:

<label class="col-md-2 control-label">邮箱:</label>
<div class="col-md-10">
    <input type="email" class="form-control" placeholder="推荐使用126邮箱" ng-model="userInfo.email">
</div>

动态切换标签样式

html

<div ng-controller="CSSCtrl">
    <p class="text-{{color}}">测试CSS样式</p>
    <button class="btn btn-default" ng-click="setGreen()">绿色</button>
</div>

js

var myCSSModule = angular.module('MyCSSModule', []);
myCSSModule.controller('CSSCtrl', ['$scope',
    function($scope) {
        $scope.color = "red";
        $scope.setGreen = function() {
            $scope.color = "green";
        }
    }
])

这里controller在$scope中定义了变量color,以及函数setGreen,
而在html中我们使用{{color}}来动态地取出数据模型的值,
在使用了setGreen函数后,我们修改了后台的数据的color,html的class也会动态的更新

ng-show和ng-hide

html

<div ng-controller='DeathrayMenuController'>
    <button ng-click='toggleMenu()'>Toggle Menu</button>
    <ul ng-show='menuState.show'>
        <li ng-click='stun()'>Stun</li>
        <li ng-click='disintegrate()'>Disintegrate</li>
        <li ng-click='erase()'>Erase from history</li>
    </ul>
<div/>

js

var myCSSModule = angular.module('MyCSSModule', []);
myCSSModule.controller('DeathrayMenuController', ['$scope',
    function($scope) {
        $scope.menuState={show:false};
        $scope.toggleMenu = function() {
            $scope.menuState.show = !$scope.menuState.show;
        };
    }
])

在这个示例中,可以学习到ng-show命令,后面跟的变量是一个true或者false值的变量,根据这个true和false的值来确定是否需要显示这个标签。

toggle()的实现就是每次相反一下$scope.menuState即可以实现

ng-class

css

.error {
    background-color: red;
}
.warning {
    background-color: yellow;
}

html

<div ng-controller='HeaderController'>
    <div ng-class='{error: isError, warning: isWarning}'>{{messageText}}</div>
    <button ng-click='showError()'>Simulate Error</button>
    <button ng-click='showWarning()'>Simulate Warning</button>
</div>

js

var myCSSModule = angular.module('MyCSSModule', []);
myCSSModule.controller('HeaderController', ['$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.isWarning = true;
            $scope.isError = false;
        };
    }
])

这个示例中的关键就是ng-class命令:

ng-class='{error: isError, warning: isWarning}'

我们通过控制器的isError和isWarning两个变量就可以来给标签动态地加上一个classname

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值