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. eclipse错误:Unable to read workbench state. Workbench UI layout will be reset.XML document structures

    Unable to read workbench state. Workbench UI layout will be reset.XML document structures must start ...

  2. boost构造,解析json

    void asynDBCenter::isGetActorInfoEx(void* on_process, const char* arg) { std::stringstream ros(arg); ...

  3. ci控制器写规范

    不需要后缀名 文件名全部小写 所有控制器需要直接或者间接继承CI_Controller 以下划线开头的方法为私有方法,不能被请求 protected private的方法不能被浏览器请求 ci方法名不 ...

  4. WINDOWS渗透与提权总结(2)

    vbs 下载者: 01 1: 02   03 echo Set sGet = createObject("ADODB.Stream") >>c:\windows\cft ...

  5. apache配置多个虚拟主机

    设置apache 多个虚拟目录记录 #配置第2个虚拟目录<VirtualHost 127.0.0.2:80>ServerName www.xx.comDocumentRoot " ...

  6. MATLAB对话框设计[转]

    Matlab之对话框 对话框设计:在图形用户界面程序设计中,对话框是重要的信息显示和获取输入数据的用户界面对象. 1.公共对话框: 公共对话框是利用windows资源的对话框,包括文件打开.文件保存. ...

  7. 关于showModalDialog()对话框点击按钮弹出新页面的问题

    页面a.aspx上,单击按钮a,走脚本,弹出showModalDialog("b.aspx",....) 在b.aspx上有个服务器控件按钮b,单击按钮,更新数据后,会弹出一个新的 ...

  8. Android学习笔记之打钩显示输入的密码

    利用EditText作为密码输入框是个不错的选择(只需设置输入类型为textPassword即可),保密且无需担心被盗取.但有时用户也不知道自己输入的是否正确,这时就应该提供一个“显示密码”的复选框, ...

  9. sql大全

    推荐一. 简单查询   简单的Transact-SQL查询只包括选择列表.FROM子句和Where子句.它们分别说明所查询列.查询的表或视图.以及搜索条件等. 例如,下面的语句查询testtable表 ...

  10. next_permutation 和 一个不成功的案例

    一个失败的案例:(POJ 1009) 题目描述 小翔同学的宿舍WIFI添加了密码,密码每天都会变更.而小翔每天都会给蹭网的同学们提供密码提示.现在请你根据密码提示,编写程序破译密码. 已知密码提示给出 ...