Angularjs学习笔记

一、constant

该函数可以将变量注册在模块中,并以服务的形式进行使用。

例如:

var app = angular.module("MyModule",[]).constant("pageConfig",{pageSize:10});

通过以上方式就定义了一个模块中可用的pageConfig的全局变量,我们在模块中可以跟使用服务一样使用该变量,例如:

app.controller("MyController",["$scope","pageConfig",function($scope,pageConfig){

  $scope.pageSize = pageConfig.pageSize;

}]);

通过constant定义的变量,一经定义就不能再修改。后面我们会说到功能和其相似的value函数。

二、directive

directive可用于自定义指令,自定义的指令可以用来扩展HTML的功能。例如,我们可以通过directive创建自己的元素标签,在下面的代码中,我们

创建了一个指令lymiPager,该指令用来创建一个实现分页功能的插件。js部分的代码如下:

$(function (angular) {
    angular.module("lymi.pagerModule", [])
        //分页配置信息
        .constant("pagerConfig", {
            initVisiblePageCount: 4,
            initCurrentIndex: 1,
            initPageCount:0
        })
        .directive("lymiPager",["pagerConfig",function(pagerConfig) {
            return {
                link: function (scope, ele, attrs) {
                    //分页插件页码改变时的响应函数
                    scope.pageChange=function(index) {
                        scope.currentIndex = index;
                    }

                    scope.$watch("currentIndex+pageCount", function () {

                        //定义作用于中分页属性的默认值
                        if (!attrs.currentIndex) {
                            scope.currentIndex = pagerConfig.initCurrentIndex;
                        } if (!attrs.pageCount) {
                            scope.pageCount = pagerConfig.initPageCount;
                        } if (!attrs.visiblePageCount) {
                            scope.visiblePageCount = pagerConfig.initVisiblePageCount;
                        }

                        //设置显示页码
                        scope.pagenums = [];
                        var low = 1, high = 1;
                        var showPage = scope.visiblePageCount;
                        if (scope.pageCount > 0) {
                            if (scope.currentIndex - 1 + showPage <= scope.pageCount) {
                                low = scope.currentIndex;
                                high = scope.currentIndex - 1 + showPage;
                            } else {
                                high = scope.pageCount;
                                low = (scope.pageCount - showPage < 0 ? 0 : scope.pageCount - showPage) + 1;
                            }
                        }
                        for (; low <= high; low++) {
                            scope.pagenums.push(low);
                        }

                        //调用外部绑定的函数
                        scope.onPageChange();
                    });
                },
                restrict: "E",
                scope: {
                    pageCount: "=",
                    currentIndex: "=",
                    visiblePageCount: "@",
                    onPageChange:"&"
                },
                templateUrl: "/html/lymiPager.html"
            }
        }]);
}(angular));

html代码如下:

<style>
    .lymiPagination {
        margin: 0;
        padding: 0;
    }

    .lymiPagination li {
        border: 1px solid #99bbee;
        color: #0088dd;
        list-style: none;
        margin: 0;
        padding-left: 10px;
        padding-right: 10px;
        float: left;
        cursor: pointer;
    }

    li.active {
        background-color: #0088ff;
        color: white;
    }
</style>
<ul class="lymiPagination">
    <li ng-click="pageChange(1)">首页</li>
    <li ng-click="pageChange(currentIndex>1?currentIndex-1:1)">上一页</li>
    <li ng-class="{active:pagenum===currentIndex}" ng-click="pageChange(pagenum)" ng-repeat="pagenum in pagenums">{{pagenum}}</li>
    <li ng-click="pageChange(currentIndex<pageCount?currentIndex+1:currentIndex)">下一页</li>
    <li ng-click="pageChange(pageCount)">尾页</li>
</ul>

调用指令方式如下所示:

<lymi-pager page-count="totalPages" current-index="pageIndex" visible-page-count="4" class="pager" on-page-change="search(searchKey,pageIndex)"></lymi-pager>

时间: 2024-11-12 06:35:07

Angularjs学习笔记的相关文章

angularjs学习笔记—事件指令

angularjs学习笔记—事件指令 小俞 4.4k 3月30日 发布 推荐 4 推荐 收藏 17 收藏,11.1k 浏览 ngClick 适用标签:所有触发条件:单击 #html <div ng-controller="LearnCtrl"> <div ng-click="click()">click me</div> <button ng-click="click()">click me<

angularjs 学习笔记(一) -----JSONP跨站访问

1.  下载angular-seed-master-master包,解压缩后将新版本的angularJS文件放入其中. 2.  制作frontmockup文件夹(前端调用),同时制作backmockup文件夹(后端调用),使用IIS开启2个webserver(此步骤可以用其他方式替代). 3.  backmockup站点添加以下HTTP头 Access-Control-Allow-Credentials:true Access-Control-Allow-Headers:origin,x-req

angularjs 学习笔记 -----结构定义

1.  Module使用方法 var APP =angular.module('fontApp',['ngResource', 'ngRoute', 'ngSanitize']); APP为定义的别名,之后的调用都应尽量使用该别名 'fontApp' ng-app="fontApp" 新版本angular中route被分离出来,各个被使用的Providerdou需要在此处声明. 大型应用应该拆分模块来做,先定义一个服务模块,然后再加载它 angular.module('xmpl.ser

angularjs 学习笔记(二) ----- bootstrap框架

1.  下载新的jquery-1.11.1文件. 2.  下载新的bootstrap文件. 3.  选择流式布局的模板填充入index.html文件. 4.  将top.foot转为nginclude文件 nginclude必须使用$scope对象,因此需要设置一个全局的mainctrl来将字符串或全局变量注入$cope中. $rootScope.global =global; 直接将全局变量global赋值给$rootScope,并且之后的子$Scope会获得继承,静态定义与ctrl分开. 5

-_-#AngularJS学习笔记

AngularJS学习笔记 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <style> .done{display:none} .ignore{color:#999} </style> <ul> <li class="

AngularJs学习笔记--directive

原版地址:http://code.angularjs.org/1.0.2/docs/guide/directive Directive是教HTML玩一些新把戏的途径.在DOM编译期间,directives匹配HTML并执行.这允许directive注册行为或者转换DOM结构. Angular自带一组内置的directive,对于建立Web App有很大帮助.继续扩展的话,可以在HTML定义领域特定语言(domain specific language ,DSL). 一.在HTML中引用direc

AngularJs学习笔记--Guide教程系列文章索引

在很久很久以前,一位前辈向我推荐AngularJs.但当时我没有好好学习,仅仅是讲文档浏览了一次.后来觉醒了……于是下定决心好好理解这系列的文档,并意译出来(英文水平不足……不能说是翻译,有些实在是看不懂,希望大家在参观的过程中指出其中的错误).经过1个多月断断续续的努力,终于把Guide里面的文章基本上都弄出来.Guide中的部分章节,由于重复的部分似乎有点多,而且篇幅较短,这里就没有列出来. 文章列表如下: AngularJs学习笔记--bootstrap AngularJs学习笔记--ht

AngularJS学习笔记filter

filter是对数据进行过滤操作,比如按某个字段搜索.格式化数据等等,是一个非常有用的接口.下面就简单介绍下它的用法. AngularJS自带的filter接口,|是filter的分隔符,参数用:分隔: currency,格式化number,货币化,默认是转化成美元  param(number,symbol),返回值将会把数字每3位加一个逗号 <input type="number" ng-model="amount"/> <p>默认美元:{

AngularJS 学习笔记 -- 指令(Directive)

AngularJS 指令学习笔记 AngularJS怎样处理指令其实是依赖于指令定义时返回的对象属性的,所以要想深入理解如何定义一个指令,首相需要理解指令定义时各个参数的含义. 完整的AngularJS指令参数 angular.module('app', []) .directive('demoDirective', function (){ // 依据官方规范,指令的定义时应该严格遵循驼峰式命名规则,使用时采用'-'连接单词 return { restrict : String in ['E'

AngularJs学习笔记(制作留言板)

原文地址:http://www.jmingzi.cn/?post=13 初学Anjularjs两天了,一边学一边写的留言板,只有一级回复嵌套.演示地址 这里总结一下学习的过程和笔记.另外,看看这篇文章也是会有收获的. 我觉得AngularJs就是实现了php的很多功能和方法,除了不能直接操作数据库以外,他有很多插件可以提供使用,很强大. 我遇到的问题: 1.使用$http.post()方法提交到php的时候,php的接收语句是这样的: 1 $shuju = file_get_contents('