angular的GitHub Repository Directive Example学习

 angular的GitHub Repository Directive Example学习

运行下面代码

<!DOCTYPE html><html ng-app="myApp"><head>
    <meta charset="utf-8" />
    <title>GitHub Repository Directive Example</title>

      <script src="http://cdn.bootcss.com/angular.js/1.3.0-beta.12/angular.min.js"></script></head><body>
    <h2>Demo</h2>
    <div>
        <a href="https://github.com/jquery/jquery" github-repo>
            jQuery - New Wave JavaScript        </a>
        <a href="https://github.com/angular/angular.js" github-repo>
            AngularJS        </a>
    </div>
    <div appVersion>1.0.1</div>
    <script>
    //使用严格模式;
    ‘use strict‘;    var myApp = angular.module(‘myApp‘, []);    /* Directives */

    myApp.directive(‘appVersion‘, [‘version‘, function(version) {        return function(scope, elm, attrs) {
            elm.text(version);
        };
    }]);                                  //依赖http服务 , $document在这里面没有用到;    myApp.directive(‘githubRepo‘, [‘$http‘, ‘$document‘, function($http, $document) {        return {
            restrict: ‘A‘,            //没有对dom进行绑定link,所以任何时候修改DOM都行;            link: function(scope, elm, attrs) {                var address = attrs.href.slice(attrs.href.indexOf(‘github.com/‘) + 11);                
                /*
                    没结果的返回的东西;
                    JSON_CALLBACK({
                      "meta": {
                        "X-RateLimit-Limit": "60",
                        "X-RateLimit-Remaining": "59",
                        "X-RateLimit-Reset": "1418877113",
                        "X-GitHub-Media-Type": "github.v3",
                        "status": 404
                      },
                      "data": {
                        "message": "Not Found",
                        "documentation_url": "https://developer.github.com/v3"
                      }
                    });
                    有结果的返回(太长了,自己试一试):
                    https://api.github.com/repos/jquery/jquery?callback=JSON_CALLBACK                */
                $http.jsonp(‘https://api.github.com/repos/‘ + address + ‘?callback=JSON_CALLBACK‘).success(function(data, status) 
                    {                    var repoInfo = data.data;                    var formattedRepoName = repoInfo.full_name.replace(‘/‘, ‘_‘);                    var container = angular.element(‘<div/>‘);                    var repoContent;                    if (repoInfo.description && repoInfo.homepage) {
                        repoContent = ‘<p>‘ + repoInfo.description + ‘</p><p class="homepage"><strong><a href="‘ + repoInfo.homepage + ‘">‘ + repoInfo.homepage + ‘</a></strong></p>‘;
                    } else if (repoInfo.description) {
                        repoContent = ‘<p>‘ + repoInfo.description + ‘</p>‘;
                    } else if (repoInfo.homepage) {
                        repoContent = ‘<p class="homepage"><strong><a href="‘ + repoInfo.homepage + ‘">‘ + repoInfo.homepage + ‘</a></strong></p>‘;
                    } else {
                        repoContent = ‘<p class="none">No description or homepage.</p>‘;
                    }

                    container.addClass(‘reposidget‘);
                    container.html(‘<div class="reposidget-header"><h2><a href="https://github.com/‘ + repoInfo.owner.login + ‘">‘ + repoInfo.owner.login + ‘</a>&nbsp;/&nbsp;<strong><a href="‘ + repoInfo.html_url + ‘">‘ + repoInfo.name + ‘</a></strong></h2></div><div class="reposidget-content">‘ + repoContent + ‘</div><div class="reposidget-footer"><span class="social"><span class="star">‘ + repoInfo.watchers_count + ‘</span><span class="fork">‘ + repoInfo.forks_count + ‘</span></span><a href="‘ + repoInfo.html_url + ‘/zipball/‘ + repoInfo.master_branch + ‘">Download as zip</a></div>‘);                    //把新建的DOM节点添加到elm后面;                    elm.after(container);
                    elm.css(‘display‘, ‘none‘);
                });
            }
        };
    }]);    </script>
    <style type="text/css">
        a.reposidget {
            color: #4183c4;
            text-decoration: none;
            display: block;
            clear: both;
            margin: 10px 0;
        }

        div.reposidget {
            font-family: helvetica, arial, freesans, clean, sans-serif !important;
            max-width: 400px;
            color: #666;
            display: block;
            clear: both;
            margin: 20px 0;
        }

        .reposidget a {
            font-family: helvetica, arial, freesans, clean, sans-serif !important;
            color: #4183c4;
            text-decoration: none;
        }

        .reposidget-header {
            font-family: helvetica, arial, freesans, clean, sans-serif !important;
            height: 36px;
            line-height: 36px;
            background: #fafafa;
            background: -webkit-gradient(linear, 0 0, 0 100%, from(#fafafa), to(#eaeaea));
            background: -webkit-linear-gradient(top, #fafafa, #eaeaea);
            background: -moz-linear-gradient(top, #fafafa, #eaeaea);
            background: -ms-linear-gradient(top, #fafafa, #eaeaea);
            background: -o-linear-gradient(top, #fafafa, #eaeaea);
            background: linear-gradient(top, #fafafa, #eaeaea);
            -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=‘#fafafa‘, endColorstr=‘#eaeaea‘)";
            border: 1px solid #eaeaea;
            border-radius: 3px 3px 0 0;
            padding: 0 10px 0 0;
            overflow: hidden;
            text-overflow: ellipsis;
        }

        .reposidget-header h2 {
            font-family: helvetica, arial, freesans, clean, sans-serif !important;
            overflow: hidden;
            text-overflow: ellipsis;
            box-sizing: border-box;
            font-size: 16px;
            font-weight: normal;
            margin: 0;
            padding: 0 0 0 32px;
            background: url(‘data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAAYCAMAAADAi10DAAAABlBMVEWioqL///8ciDJAAAAAAnRSTlP/AOW3MEoAAAAxSURBVBjTY2BkQAMYAnAJJAAXQgjjExrKGokBjIwYGqE0XrOwhD1cNcI0nEIwBggAALWWANXTTzTsAAAAAElFTkSuQmCC‘) 7px 7px no-repeat;        }

        .reposidget-header h2 strong {
            font-family: helvetica, arial, freesans, clean, sans-serif !important;
            font-weight: bold;
        }

        .reposidget-content {
            font-family: helvetica, arial, freesans, clean, sans-serif !important;
            padding: 10px 10px 8px 10px;
            background: #fafafa;
            border: 1px solid #ddd;
            box-shadow: inset 0 1px 1px #fff; 
        }

        .reposidget-content p {
            font-family: helvetica, arial, freesans, clean, sans-serif !important;
            margin: 0;
            font-size: 13px;
            line-height: 21px;
        }

        .reposidget-content p.homepage {
            text-overflow: ellipsis;
            overflow: hidden;
        }

        .reposidget-content p.none {
            font-family: helvetica, arial, freesans, clean, sans-serif !important;
            font-style: italic;
            color: #999;
        }

        .reposidget-content strong {
            font-family: helvetica, arial, freesans, clean, sans-serif !important;
            line-height: 1.25 !important;
        }

        .reposidget-content a:hover {
            font-family: helvetica, arial, freesans, clean, sans-serif !important;
            text-decoration: underline;
        }

        .reposidget-footer {
            font-family: helvetica, arial, freesans, clean, sans-serif !important;
            height: 46px;
            background: #fcfcfc;
            border: 1px solid #ddd;
            border-top: none;
            border-radius: 0 0 3px 3px;
            padding: 0 10px;
        }

        .reposidget-footer .social {
            font-family: helvetica, arial, freesans, clean, sans-serif !important;
            display: inline-block;
            height: 26px;
            margin: 10px 0 0 0;
        }

        .reposidget-footer .social span {
            font-family: helvetica, arial, freesans, clean, sans-serif !important;
            vertical-align: top;
            margin: 0;
            float: none;
            border: 1px solid #ddd;
            height: 24px;
            line-height: 24px;
            display: inline-block;
            color: #666;
            font-size: 12px;
            font-weight: bold;
            padding: 0 5px 0 24px;
        }

        .reposidget-footer .star {
            font-family: helvetica, arial, freesans, clean, sans-serif !important;
            border-radius: 3px 0 0 3px;
            background: #fff url(‘data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAMCAYAAABSgIzaAAAAwUlEQVQoz42SMQ6EIBREuROX0BOY2GzcmmaLTTBxvYM9jVyEC0jJTZTYsQ4R4hKIW7xk/DMT5SNxzpEUa23X9/0IoHMZkhtqrd9VVY0A+ra4rusTcM5HSqkHOsx/imEIlmXxbwqlAGbwrlkihBjS4B3okH3fH0op/m8JWXTiFo0xr7quiwV4yIQtx8Nu29bN81z8bHjIZLd63WYKvOJ1MMaKRXjFYtM0PiSlHI7nFkBjBq9YnKbpg/D1Nzt1e3ox+wXh13nYaOboUAAAAABJRU5ErkJggg==‘) 6px 6px no-repeat;        }

        .reposidget-footer .fork {
            font-family: helvetica, arial, freesans, clean, sans-serif !important;
            border-left: none !important;
            border-radius: 0 3px 3px 0;
            background: #fff url(‘data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAOCAYAAAAbvf3sAAAA8UlEQVQoz4WRTQqDMBSEXXbRu0gJdCH0AO66KP6cQ4pUJLcSFDyBC0VQ/EHPYt88NKhUu5gwTPJlwos2TZOWJIknhJAQPLIjaX3f323blnVds+CRnQHCcRxZFAULnrILNuM4fi/N8AxgSdNUbZD3kbVte903U2YwMI6j7rquhMjzc6jFQFue56y5WTDQdd0dAUT+tryX2j6rZk89iaoUQF4BwzAYSzN5/S/g+z7fHgSBVFNaA0v9WqZpyrIsnxugaZqfAA5XVfXa/AOWKIrUWMMwlKc/TTc8LMvazBvZIUCHeN5ZlrHgkR0C87y9/byP9AVjF5fB2Yv1MAAAAABJRU5ErkJggg==‘) 7px 5px no-repeat;        }

        .reposidget-footer a {
            font-family: helvetica, arial, freesans, clean, sans-serif !important;
            float: right;
            margin: 6px 0 0 0;
            display: inline-block;
            padding: 8px 15px;
            line-height: 1.25;
            font-size: 12px;
            font-weight: bold;
            color: #666;
            text-shadow: rgba(255, 255, 255, 0.898438) 0px 1px;
            background: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#e5e5e5));
            background: -webkit-linear-gradient(top, #f5f5f5, #e5e5e5);
            background: -moz-linear-gradient(top, #f5f5f5, #e5e5e5);
            background: -ms-linear-gradient(top, #f5f5f5, #e5e5e5);
            background: -o-linear-gradient(top, #f5f5f5, #e5e5e5);
            background: linear-gradient(top, #f5f5f5, #e5e5e5);
            -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=‘#f5f5f5‘, endColorstr=‘#e5e5e5‘)";
            border-radius: 3px;
            border: 1px solid #ddd;
            border-bottom-color: #bbb;
            box-shadow: rgba(0, 0, 0, 0.0976563) 0px 1px 3px;
            -webkit-user-select: none;
        }

        .reposidget-footer a:hover {
            color: #337797;
            text-shadow: rgba(255, 255, 255, 0.898438) 0px 1px;
            background: -webkit-gradient(linear, 0 0, 0 100%, from(#f0f7fa), to(#d8eaf2));
            background: -webkit-linear-gradient(top, #f0f7fa, #d8eaf2);
            background: -moz-linear-gradient(top, #f0f7fa, #d8eaf2);
            background: -ms-linear-gradient(top, #f0f7fa, #d8eaf2);
            background: -o-linear-gradient(top, #f0f7fa, #d8eaf2);
            background: linear-gradient(top, #f0f7fa, #d8eaf2);
            -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=‘#f0f7fa‘, endColorstr=‘#d8eaf2‘)";
            border: 1px solid #cbe3ee;
            border-bottom-color: #97c7dd;
        }

        .reposidget-footer a:active {
            color: #fff;
            text-shadow: rgba(0, 0, 0, 0.296875) 0px -1px 0px;
            background: -webkit-gradient(linear, 0 0, 0 100%, from(#0770a0), to(#0ca6dd));
            background: -webkit-linear-gradient(top, #0770a0, #0ca6dd);
            background: -moz-linear-gradient(top, #0770a0, #0ca6dd);
            background: -ms-linear-gradient(top, #0770a0, #0ca6dd);
            background: -o-linear-gradient(top, #0770a0, #0ca6dd);
            background: linear-gradient(top, #0770a0, #0ca6dd);
            -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=‘#0770a0‘, endColorstr=‘#0ca6dd‘)";
            border: 1px solid #2a65a0;
            border-bottom-color: #0770a0;
        }
    </style></body></html>

时间: 2024-12-20 20:18:15

angular的GitHub Repository Directive Example学习的相关文章

详说Angular之指令(directive)

前言 angular核心部分如下图几大块,最重要的莫过于指令这一部分,本文将重点讲解指令这一部分,后续笔者将通过陆续的学习来叙述其他如:factory.service等,若有叙述错误之处,欢迎各位指正以及批评.本文将通过一些实例来进行叙述. 话题 restrict以及replace 在sublimeText中安装angular插件之后,我们需要创建指令时此时将自动出现如下定义:所以我们将重点放在如下各个变量的定义. .directive('', ['', function(){ // Runs

强烈推荐 GitHub 上值得前端学习的开源实战项目

强烈推荐 GitHub 上值得前端学习的开源实战项目. Vue.js vue-element-admin 是一个后台前端解决方案,它基于和 element-ui 实现 基于 iView 的 Vue 2.0 管理系统模板 基于 vue2 + vuex 构建一个具有 45 个页面的大型单页面应用 基于 vue + element-ui 的后台管理系统 基于Vue.js + Element UI 的后台管理系统解决方案 基于 Vue(2.5) + vuex + vue-router + vue-axi

angular自定义指令-directive

Directive究竟是个怎么样的一个东西呢?我个人的理解是这样的:将一段html.js封装在一起,形成一个可复用的独立个体,具体特定的功能.下面我们来详细解读一下Directive的一般性用法. var myDirective = angular.module('directives', []); myDirective.directive('directiveName', function($inject) { return { template: '<div></div>',

GitHub 上值得关注学习的 iOS 开源项目

特此声明,本文转自知乎,原文地址:http://www.zhihu.com/question/22914651,本人只是复制.粘贴. 1. ReactiveCocoa:ReactiveCocoa/ReactiveCocoa · GitHub:GitHub自家的函数式响应式编程范式的Objective-C实现,名字听着很高大上,学习曲线确实也比较陡,但是绝对会改变你对iOS编程的认知,首推之.2. Mantle:Mantle/Mantle · GitHub:又是GitHub自家的产物,轻量级建模的

-_-#【Angular】自定义指令directive

AngularJS学习笔记 <!DOCTYPE html> <html ng-app="Demo"> <head> <meta charset="utf-8"> <title></title> </head> <body> <script src="jquery-1.8.3.min.js"></script> <scrip

Angular自定义指令(directive)

angular自定义指令,意我们可以通过angula自己定义指令,来实现我们的特殊要求,为所欲为,一支穿云箭,千军万马来相见 多少年的老规矩了,先看代码: 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <meta http-equiv="X-UA-Compatible" content=&quo

Github与Git的学习

一.Github与Git的简介与区别 1.Github是一个基于Git的代码托管平台,付费用户可以建私人仓库,我们一般的免费用户只能使用公共仓库,也就是代码要公开.Github 由Chris Wanstrath, PJ Hyett 与Tom Preston-Werner三位开发者在2008年4月创办.迄今拥有59名全职员工,主要提供基于git的版本托管服务. 2.Git是一款开源的分布式版本管理工具,git的诞生也是相当传奇的,由Linux之父-Linus Benedict Torvalds开发

使用angular中自定义的directive实现删除确认框

我的删除情况,可单独删除一条任务,也可以根据类别删除(类别和所属此类别的任务集合). 首先页面 task.ng.html <span ng-click="remove(task)" confirm><span class="glyphicon glyphicon-trash icon" ></span></span> TaskController $scope.ok = function (task) { $scope

解析angular在github中step-12 利用事件实现缩略图切换效果

深入解析angular中事件处理机制中实现缩略图切换效果 step-12 一.首先看页面效果 在页面中我们点击右侧的小缩略图,左侧的图片能够做出动态的切换效果,那么这是怎么实现的恩? 二.实现思路: 1.导入angular-animate.js 2.在手机详细视图我们把大图片的ngSrc指令绑定到mainImageUrl属性上,同时我们注册一个ngClick处理器到缩略图上.当一个用户点击缩略图的任意一个时,这个处理器会使用setImage事件处理函数来把mainImageUrl属性设置成选定缩