美文网首页
Angular(三)

Angular(三)

作者: sheepmiee | 来源:发表于2017-04-25 17:27 被阅读11次

directive指令间的交互

directive指令依赖

  • require:'^girl'自己身上找找不到向上找,找到则会在link函数的第四个参数增加girl控制器的实例
  • require:'^?girl'如果没有依赖到使用的是? 则得到的值是null,否则报错
app.directive('loveMoney',function () {
    return {
        require:'^?girl',
        link: function (scope,element,attrs,girlCtrl) {
            girlCtrl.add('loveMoney');
        }
    }
});

opener组demo

样式:

.title{
    width: 100px;
    height: 30px;
    line-height: 30px;
    background: yellow;
}
.content{
    width: 100px;
    height: 100px;
    background: red;
}

增加指令组:

<group>
    <opener title="标题1">这是内容1</opener>
    <opener title="标题2">这是内容2</opener>
</group>

增加引用模板:

<div class="title" ng-click="show()">{{title}}</div>
<div class="content" ng-show="flag" ng-transclude></div>

增加指令

app.directive('group', function () {
    return {
        controller: function ($scope) {
            var arr = [];
            this.add = function (scope) {
                arr.push(scope);
            }
            this.close = function (scope) {
                for(var i = 0; i<arr.length;i++){
                    if(arr[i]!=scope){
                        arr[i].flag = false;
                    }
                }
            }
        }
    }
});
app.directive('opener',function () {
    return {
        templateUrl:'open.html',
        transclude:true,
        require:'^group',
        scope:{
            title:'@'
        },
        link:function(scope,element,attrs,groupCtrl){
            scope.flag = false;
            scope.show = function () {
                scope.flag = !scope.flag;
                groupCtrl.close(scope);
            };
            groupCtrl.add(scope);
        }
    }
});

angular方法

$watch(watchExpression, listener, objectEquality)

监听模型变化

$scope.$watch(function() {
    return $scope.foo;
}, function(newVal, oldVal) {
    console.log(newVal, oldVal);
});
  • watchExpression:监听的对象,它可以是一个angular表达式如'name',或函数如function(){return $scope.name}。

  • listener:当watchExpression变化时会被调用的函数或者表达式,它接收3个参数:newValue(新值), oldValue(旧值), scope(作用域的引用)

  • objectEquality:是否深度监听,如果设置为true,它告诉Angular检查所监控的对象中每一个属性的变化. 如果你希望监控数组的个别元素或者对象的属性而不是一个普通的值, 那么你应该使用它

$apply

AngularJS外部的控制器(DOM 事件、外部的回调函数如 jQuery UI 空间等)调用了AngularJS 函数之后,必须调用$apply。即不是angular自带的方法,数据更新不会影响视图在这种情况下,你需要命令 AngularJS刷新自已。

$http

我们可以使用内置的$http服务直接同外部进行通信。$http服务只是简单的封装了浏览器原生的XMLHttpRequest对象,用法同jquery

$http服务是只能接受一个参数的函数,这个参数是一个对象,包含了用来生成HTTP请求的
配置内容。这个函数返回一个promise对象,具有success和error两个方法。返回一个promise对象

var promise=$http({
method:'GET',
url:"data.json"
});

由于$http方法返回一个promise对象,对象中有一个then方法来处理回调,方法中有两个参数,第一个是成功的回调第二个是失败的回调

$http.jsonp(
      $sce.trustAsResourceUrl(
      'https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd='+$scope.query),
      {jsonpCallbackParam: 'cb'})
      .then(
      function (res) { //成功
                $scope.arrs = res.data.s;
            },
      function (err) { //失败
                console.log(err);
            });

相关文章

  • Angular Library系列之使用Angular CLI

    一、创建并且运行angular项目 二、创建angular library 三、在angular.json 文件中...

  • 前端三大框架小结

    前端三大框架:Vue、React、Angular(AngularJS1.x) 前端三大框架全家桶: Angular...

  • Angular2 依赖包详解说明

    Angular 应用程序以及 Angular 本身都依赖于很多第三方包 ( 包括 Angular 自己 ) 提供的...

  • Angular CLI工程结构

    一、angular CLI 二、angular.json 三、packge.json 四、项目目录结构

  • vue基础知识

    引子 前端三大框架: +Angular Google Angular.js(1.x) Augular(2.x) +...

  • ng-book 2 - 002

    第三章:Angular的工作原理 Angular应用是由组件构成的当开发新的Angular应用时,先画出原型图,然...

  • Angular(三)

    directive指令间的交互 directive指令依赖 require:'^girl'自己身上找找不到向上找,...

  • angular4 新特性

    Angular有三个主要版本。发布的第一个版本是Angular1,也叫AngularJS。Angular1之后是A...

  • 前端路由原理和React Router

    前端路由原理 前端三大框架 Angular、React、Vue ,它们的路由解决方案 angular/router...

  • vue知识点

    1. 三个框架 vue Angular React vue相对于Angular、react来说是最容易学习...

网友评论

      本文标题:Angular(三)

      本文链接:https://www.haomeiwen.com/subject/zlovzttx.html