URL:

https://toddmotto.com/ultimate-guide-to-learning-angular-js-in-one-day/?utm_source=javascriptweekly&utm_medium=email

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>test</title>
    <script src="js/lib/angular.min.js"></script>
    <script >
        var myApp = angular.module('myApp', []);
        myApp.controller('MainCtrl', ['$scope', 'Math',  function($scope, Math) {
            var a = 12;
            var b = 24;
            $scope.myModel = '';
            $scope.result = Math.multiply(a, b);
            $scope.greeting = 'Todd Motto';
            $scope.numbers = [10, 25, 35, 45, 60, 80, 100];
            $scope.lowerBound = 42;
            $scope.greaterThanNum = function(item) {
                return item > $scope.lowerBound;
            };
            $scope.user = {};
            $scope.user.details = {
                "username": "Todd Motto",
                "id": "89101112"
            };
        }]);
        myApp.directive('customButton', function() {
            return {
                restrict: 'A',
                replace: true,
                transclude: true,
                templateUrl: 'templates/customButton.html',
                link: function (scope, element, attrs) {
                    //dom mani/event
                }
            };
        });
        myApp.service('Math', function() {
            this.multiply = function(x, y) {
                return x * y;
            };
        });
        myApp.filter('reverse', function() {
            return function(input, uppercase) {
                var out = '';
                for (var i = 0; i < input.length; i++) {
                    out = input.charAt(i) + out;
                }
                if (uppercase) {
                    out = out.toUpperCase();
                }
                return out;
            }
        });
        myApp.controller('EmailsCtrl', ['$scope', function($scope) {
            $scope.emails = {};
            $scope.emails.messages = [{
                "from": "Steve Jobs",
                "subject": "I think I'm holding my phone wrong :/",
                "sent": "2013-10-01T08:05:59Z"
            },{
                "from": "Ellie Goulding",
                "subject": "I've got Starry Eyes, lulz",
                "sent": "2013-09-21T19:45:00Z"
            },{
                "from": "Michael Stipe",
                "subject": "Everybody hurts, sometimes.",
                "sent": "2013-09-12T11:38:30Z"
            },{
                "from": "Jeremy Clarkson",
                "subject": "Think I've found the best car... In the world",
                "sent": "2013-09-03T13:15:11Z"
            }];
            $scope.deleteEmail = function(index) {
                $scope.emails.messages.splice(index, 1);
            };
            $scope.main = {};
            $scope.main.test1 = [];
            $scope.main.test2 = [{"some": "data"}];
        }]);

    </script>

</head>
<body>
<div ng-app="myApp">
    <div ng-controller="MainCtrl">
        welcome, {{ user.details.username}}.<br>
        user ID: {{ user.details.id }}<br>
        {{result}}<br>
        <a custom-button>Click Me</a><br>
        no filter: {{greeting}}<br>
        Reverse: {{greeting|reverse}}<br>
        <input type="text" ng-model="lowerBound" /><br>
        <li ng-repeat="number in numbers|filter: greaterThanNum">
            {{number}}
        </li><br>
        <input type="text" ng-model="myModel" placeholder="Start typing..." />
        <p>My model data: {{ myModel }} </p>
    </div>
    <div ng-controller="EmailsCtrl">
        <ul>
            <li ng-repeat="message in emails.messages">
                <p>{{ message.index }}</p>
                <p>From: {{ message.from }}</p>
                <p>Subject: {{ message.subject }}</p>
                <p>{{message.sent|date:'MMM d, y h:mm:ss a'}}</p>
                <p><a ng-click="deleteEmail($index)">Delete email</a></p>
            </li>
        </ul>
         <p>Test 1: {{ main.test1.length > 0 && 'My data' || 'No data' }}</p>
        <p>Test 2: {{ main.test2.length > 0 && 'My data' || 'No data' }}</p>
    </div>
    <a href="" ng-click="toggle = !toggle">Toggle nav</a>
    <ul ng-show="toggle">
        <li>Link 1</li>
        <li>Link 2</li>
        <li>Kub 3</li>
    </ul>
</div>
</body>
</html>

再次实操一次angular的基本语法的更多相关文章

  1. 新硬盘挂载-fdisk+mount案例实操

    新硬盘挂载-fdisk+mount案例实操 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 现在很多服务器都支持热插拔了,当有新的硬盘插入到服务器上我们需要将其分区,格式化,然后挂载 ...

  2. linux基础实操四

    实操一: 1)为新加的硬盘分区,一个主分区大小为10剩余空间给扩展分区,在扩展分区上划分2个逻辑分别为5G 2)式化主分区为ext3系统 #mkfs.ext3 /dev/sdb1 3 将逻辑分区设置为 ...

  3. 【Social listening实操】作为一个合格的“增长黑客”,你还得重视外部数据的分析!

    本文转自知乎 作者:苏格兰折耳喵 ----------------------------------------------------- 在本文中,作者引出了"外部数据"这一概 ...

  4. (二)Linux实操之——网络配置、进程管理、服务管理、组管理、YUM

    接上段   (一)Linux实操之——权限.任务调度.磁盘分区 4.网络配置 4.1 NAT模式的网络配置 目前我们采用的网络配置是NAT模式. windows下cmd通过 ipconfig 命令可以 ...

  5. 大数据学习笔记——Linux完整部署篇(实操部分)

    Linux环境搭建完整操作流程(包含mysql的安装步骤) 从现在开始,就正式进入到大数据学习的前置工作了,即Linux的学习以及安装,作为运行大数据框架的基础环境,Linux操作系统的重要性自然不言 ...

  6. css知识笔记:水平垂直居中(别只看,请实操!!!)

    css实现元素的水平垂直居中. (尝试采用5W2H方法说明): 别只看,请实操!!! What: 1.这篇文档主要描述元素水平方向居中的几种最常见和最实用的几种方式,并说明优缺点. 2.写这篇文章的目 ...

  7. css知识笔记:垂直居中(别只看,请实操!!!)

    css实现元素的垂直居中. (尝试采用5W2H方法说明): 别只看,请实操!!! What: 1.这篇文档主要描述元素水平方向居中的几种最常见和最实用的几种方式,并说明优缺点. 2.写这篇文章的目的, ...

  8. css知识笔记:水平居中(别只看,请实操!!!)

    css实现元素的水平居中. (尝试采用5W2H方法说明): 别只看,请实操!!! What: 1.这篇文档主要描述元素水平方向居中的几种最常见和最实用的几种方式,并说明优缺点. 2.写这篇文章的目的, ...

  9. 干货 | 京东云应用负载均衡(ALB)多功能实操

    应用负载均衡(Application Load Balancer,简称ALB)是京东云自主研发的一款七层负载均衡产品,主要面向HTTP和HTTPS流量的WEB应用程序,提供灵活的功能配置.应用负载均衡 ...

随机推荐

  1. iconv命令详解

    功能]  对于给定文件把它的内容从一种编码转换成另一种编码. [描述]  -f encoding :把字符从encoding编码开始转换. -t encoding :把字符转换到encoding编码. ...

  2. Windows 下配置使用MemCached(转载)

    工具: memcached-1.2.6-win32-bin.zip     MemCached服务端程序(for win) Memcached Manager             win下的Mem ...

  3. [Asp.net Mvc]通过UrlHelper扩展为js,css静态文件添加版本号

    写在前面 在app中嵌入h5应用,最头疼的就是缓存的问题,比如你修改了一个样式,或者在js中添加了一个方法,发布之后,并没有更新,加载的仍是缓存里面的内容.这个时候就需要清理缓存才能解决.但又不想让w ...

  4. ExtJS学习之路第五步:认识最常见组件Panel

    文档中描述 Panel(面板)是一个容器,它具有特定的功能和结构部件,这使它成为面向应用用户界面的完美基石.面板,继承自Ext.container.Container,能够配置布局以及子组件(Chil ...

  5. 微信和WeChat的合并月活跃账户达6.97亿

    腾讯最新财报显示,微信和WeChat的合并月活跃账户于2015年底达6.97亿,同比增长39%.2016年初春节假期期间,通过微信支付收发的红包数量仅在6天内就超过320亿,同比增长9倍. 腾讯网络广 ...

  6. ABK (枚举)

    ABK Accepted : 24   Submit : 176 Time Limit : 1000 MS   Memory Limit : 65536 KB  题目描述 ABK是一个比A+B还要简单 ...

  7. Third scrum meeting - 2015/10/28

    在一天的工作中明显发现到,无法和网站开发团队进行交流会严重导致我们的进程拖延,所以我们在现有的情况下也把大家的goal初步完成了,我们也对代码规范进行了详细的讨论,以及UI的设计完成,所以整个团队都真 ...

  8. Android5.0版本之后切换听筒模式

    5.0以前Android听筒模式和扬声器模式这样就管用 扬声器://关闭麦克风  mAudioManager.setMicrophoneMute(false);  // 打开扬声器  mAudioMa ...

  9. MotionEvent常见值

    常见的动作常量: public static final int ACTION_DOWN        = 0;单点触摸动作 public static final int ACTION_UP     ...

  10. OpenCV入门(一)

    参考:http://blog.csdn.net/poem_qianmo/article/details/20537737 这位同学挺牛的,才研一就出书了,实在是让人汗颜啊,不说了,多学习. 这一篇主要 ...