jquery angularjs angular 相关详细总结备忘

jquery angularjs angular 相关详细总结备忘

noConflict() 方法释放变量 $ 的 jQuery 控制权。
使用 noConflict() 方法为 jQuery 变量规定新的名称:
var jq=$.noConflict();

$.param(object,trad) 创建数组或对象的序列化表示形式。
序列化的值可在生成 AJAX 请求时用于 URL 查询字符串中。
trad 可选。布尔值,指定是否使用参数序列化的传统样式。
$("div").text($.param(personObj));

//如何统一管理全局函数?
   //法一:扩展方法:extend整合全局函数
   jQuery.extend({//扩展的东西(参数)是以json对象的形式来出现的;
      myFunction:function () {
         console.log("222");
      },
    })
    //调用全局函数
$(document).ready(function () {
   $.myFunction();
   $.myFunction1("3333");
})

//法二:jquery命名空间,避免各插件命名冲突的问题,把全局函数封装到对象中;
jQuery.myPlugin = {//为全局函数创建另一个命名空间;
   functionOne:function () {}
}
//调用:
$.myPlugin.functionOne();


jquery.extend(object);为扩展jquery类本身.为类添加新的方法
jquery.fn.extend(object);给jquery对象添加方法

(function( $, window, document, undefined ){}){
    $.fn.extend({
        test:function(){
                alert($(this).attr("id"));
        }
    });
   
}(jquery,window,document)

(function( $, window, document, undefined ){}){
    $.extend({
        test:function(){
                alert("好好活着");
        }
    });
   
}(jquery,window,document)

(function(parameter){
    alert(parameter);
})("立即执行函数传递参数");
自调函数,函数定义好之后自动执行
好处是,不会产生任何全局变量。缺点是无法重复执行。对于插件来说,是最合适不过的了。不会产生任何全局变量,同时一次引用就够了。

jQuery.extend() 函数用于将一个或多个对象的内容合并到目标对象。
注意:1. 如果只为$.extend()指定了一个参数,则意味着参数target被省略。此时,target就是jQuery对象本身。通过这种方式,我们可以为全局对象jQuery添加新的函数。
2. 如果多个对象具有相同的属性,则后者会覆盖前者的属性值。
var settings = $.extend({}, defaults, options); 

jQuery 实用工具
$.grep() 函数使用指定的函数过滤数组中的元素,并返回过滤后的数组。
$.isArray()    判断指定参数是否是一个数组
$.isFunction()    判断指定参数是否是一个函数
$.isNumeric()    判断指定参数是否是一个数字值
$.isPlainObject()    判断指定参数是否是一个纯粹的对象
$.makeArray() 函数用于将一个类似数组的对象转换为真正的数组对象。
$.sub()    创建一个新的jQuery副本,其属性和方法可以修改,而不会影响原来的jQuery对象
$.parseHTML()    将HTML字符串解析为对应的DOM节点数组
$.parseJSON()    将符合标准格式的JSON字符串转为与之对应的JavaScript对象
$.parseXML()    将字符串解析为对应的XML文档
$.now()    返回当前时间
$.Callbacks() 指一个多用途的回调函数列表对象,提供了一种强大的方法来管理回调函数列对。

jquery 获取绑定事件
var eventsData = $.data(domObj,'events') || $._data(domObj,'events');
只能获取到使用jquery方法绑定的参数 on ,live 等。如果是直接写到元素上的事件是不能获取的,使用其他非jquery设置的事件也是无法获取的 

call,apply,bind的共同点都可以改变this的指向,而不同点呢,就是返回值不同,call,apply的返回值取决于目标函数是否存在返回值,
而bind是返回一个新的函数,并把this指向这个函数。而call,apply的区别就是参数的区别,apply是接受一个数组,而call只能接受单个单个的参数

var callbacks = $.Callbacks();
    callbacks.add( fn1 ); 
    // 输出: foo!
    callbacks.fire( "foo!" );
    callbacks.add( fn2 );
    // 输出: bar!, fn2 says: bar!
    callbacks.fire( "bar!" );

function scope(controllerId,apply) {
   scope= angular.element(document.getElementById(''+controllerId)).scope();//angular.element($('[ng-controller]'))
   if(apply)
      scope.$apply(); 
  return scope;
};
jQuery插件开发
(function($) {
  $.myPlugin = {
    sum: function(array) {
      var total = 0;
      return total;
    },
  }
}(jQuery));

绑定事件时传递参数
$(selector).on(event,childSelector,data,function,map)
$(selector).trigger(event,eventObj,param1,param2,...)
$("p").on("mouseover mouseout",function(){
    $("p").toggleClass("intro");多个事件绑定同一个函数
  });

$(:text").bind("keyup", function(event) {
event = event || window.event;
var target = event.target; //这个就是触发事件的控件
});
$("#cbutton1").bind("click",{"id":"111","name":"aaa"},getData);
function getData(event){
alert(event.data.id);
}

$("#foo").html();//相当于dom对象的innerHTML
$ obj.prop('outerHTML'); //相当于dom对象的outerHTML
var $cr=$("#cr"); //jquery对象
var cr = $cr[0]; //dom对象
也可写成:
var cr=$cr.get(0);
var cr=document.getElementById("cr"); //dom对象
var $cr = $(cr); //转换成jquery对象

$('').attr()返回的是html对象
$('').prop()返回的是DOM对象
attr和prop的使用场景:
1.添加属性名称该属性就会生效应该使用prop();
2.是有true,false两个属性使用prop();(如'checked','selected','disabled'等)
3.其他则使用attr();

event.currentTarget    在事件冒泡阶段内的当前 DOM 元素
event.data    包含当前执行的处理程序被绑定时传递到事件方法的可选数据
event.delegateTarget    返回当前调用的 jQuery 事件处理程序所添加的元素
event.preventDefault()    阻止事件的默认行为
event.target    返回哪个 DOM 元素触发事件
event.relatedTarget    返回当鼠标移动时哪个元素进入或退出
event.stopPropagation()    阻止事件向上冒泡到 DOM 树,阻止任何父处理程序被事件通知
event.type    返回哪种事件类型被触发
event.result    包含由被指定事件触发的事件处理程序返回的最后一个值
event.timeStamp    返回从 1970 年 1 月 1 日到事件被触发时的毫秒数
trigger()    触发绑定到被选元素的所有事件
triggerHandler()    触发绑定到被选元素的指定事件上的所有函数
$.proxy()    接受一个已有的函数,并返回一个带特定上下文的新的函数
$.holdReady()    用于暂停或恢复.ready() 事件的执行

https://my.oschina.net/zengfr/
---------------------------------------------------------------------------------------------------------------------------------
scope 下面3个重要的方法:
1. $digest(): 脏值检查循环;
2. $watch(): 监听;
3. $apply(): 上下文执行表达式. $applyAsync(); 

AngularJS 参考手册
AngularJS 指令
本教程用到的 AngularJS 指令 :

指令    描述
ng-app    定义应用程序的根元素。
ng-bind    绑定 HTML 元素到应用程序数据
ng-bind-html    绑定 HTML 元素的 innerHTML 到应用程序数据,并移除 HTML 字符串中危险字符
ng-bind-template    规定要使用模板替换的文本内容
ng-blur    规定 blur 事件的行为
ng-change    规定在内容改变时要执行的表达式
ng-checked    规定元素是否被选中
ng-class    指定 HTML 元素使用的 CSS 类
ng-class-even    类似 ng-class,但只在偶数行起作用
ng-class-odd    类似 ng-class,但只在奇数行起作用
ng-click    定义元素被点击时的行为
ng-cloak    在应用正要加载时防止其闪烁
ng-controller    定义应用的控制器对象
ng-copy    规定拷贝事件的行为
ng-csp    修改内容的安全策略
ng-cut    规定剪切事件的行为
ng-dblclick    规定双击事件的行为
ng-disabled    规定一个元素是否被禁用
ng-focus    规定聚焦事件的行为
ng-form    指定 HTML 表单继承控制器表单
ng-hide    隐藏或显示 HTML 元素
ng-href    为 the <a> 元素指定链接
ng-if    如果条件为 false 移除 HTML 元素
ng-include    在应用中包含 HTML 文件
ng-init    定义应用的初始化值
ng-jq    定义应用必须使用到的库,如:jQuery
ng-keydown    规定按下按键事件的行为
ng-keypress    规定按下按键事件的行为
ng-keyup    规定松开按键事件的行为
ng-list    将文本转换为列表 (数组)
ng-model    绑定 HTML 控制器的值到应用数据
ng-model-options    规定如何更新模型
ng-mousedown    规定按下鼠标按键时的行为
ng-mouseenter    规定鼠标指针穿过元素时的行为
ng-mouseleave    规定鼠标指针离开元素时的行为
ng-mousemove    规定鼠标指针在指定的元素中移动时的行为
ng-mouseover    规定鼠标指针位于元素上方时的行为
ng-mouseup    规定当在元素上松开鼠标按钮时的行为
ng-non-bindable    规定元素或子元素不能绑定数据
ng-open    指定元素的 open 属性
ng-options    在 <select> 列表中指定 <options>
ng-paste    规定粘贴事件的行为
ng-pluralize    根据本地化规则显示信息
ng-readonly    指定元素的 readonly 属性
ng-repeat    定义集合中每项数据的模板
ng-selected    指定元素的 selected 属性
ng-show    显示或隐藏 HTML 元素
ng-src    指定 <img> 元素的 src 属性
ng-srcset    指定 <img> 元素的 srcset 属性
ng-style    指定元素的 style 属性
ng-submit    规定 onsubmit 事件发生时执行的表达式
ng-switch    规定显示或隐藏子元素的条件
ng-transclude    规定填充的目标位置
ng-value    规定 input 元素的值
过滤器解析 AngularJs 过滤器。

AngularJS 事件
AngularJS 支持以下事件:

ng-click
ng-dbl-click
ng-mousedown
ng-mouseenter
ng-mouseleave
ng-mousemove
ng-keydown
ng-keyup
ng-keypress
ng-change
事件解析: Angular 事件。

AngularJS 验证属性
$dirty
$invalid
$error
验证解析:Angular 验证。
$dirty    表单有填写记录
$valid    字段内容合法的
$invalid    字段内容是非法的
$pristine    表单没有填写记录


AngularJS 全局 API
转换
API    描述
angular.lowercase()    将字符串转换为小写
angular.uppercase()    将字符串转换为大写
angular.copy()    数组或对象深度拷贝
angular.forEach()    对象或数组的迭代函数
比较
API    描述
angular.isArray()    如果引用的是数组返回 true
angular.isDate()    如果引用的是日期返回 true
angular.isDefined()    如果引用的已定义返回 true
angular.isElement()    如果引用的是 DOM 元素返回 true
angular.isFunction()    如果引用的是函数返回 true
angular.isNumber()    如果引用的是数字返回 true
angular.isObject()    如果引用的是对象返回 true
angular.isString()    如果引用的是字符串返回 true
angular.isUndefined()    如果引用的未定义返回 true
angular.equals()    如果两个对象相等返回 true
JSON
API    描述
angular.fromJson()    反序列化 JSON 字符串
angular.toJson()    序列化 JSON 字符串
基础
API    描述
angular.bootstrap()    手动启动 AngularJS
angular.element()    包裹着一部分DOM element或者是HTML字符串,把它作为一个jQuery元素来处理。
angular.module()    创建,注册或检索 AngularJS 模块
全局 API 解析 :Angular API。

https://my.oschina.net/zengfr/
--------------------------------------------------------------------------------------------------------------
angular10 组件间传值与通信
方法1 @Input 父级组件向子组件传递
方法2 EventEmitter, @output 子组件传递消息给父组件  子组件创建事件 EventEmitter 对象,使用@output公开出去 父组件监听子组件@output出来的方法,然后处理事件 
方法3 使用 @ViewChild 一般用于父组件给子组件传递信息,或者父组件调用子组件的方法
方法4 service进行通讯,两个组件同时注入某个服务

[]实现了数据流从组件到模板,()实现了数据流从模板到组件,两者一结合[()]就实现了双向绑定。

[ngModel]="manualCode" (ngModelChange)="manualCode=$event;"
等价于下面这样的写法:[(ngModel)]="manualCode" 
使用前缀形式的语法:<input bindon-ngModel="currentUser.firstName">

angular cli --host --skip-tests

https://my.oschina.net/zengfr/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章