博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第一次用AngularJS
阅读量:5956 次
发布时间:2019-06-19

本文共 4770 字,大约阅读时间需要 15 分钟。

1.创建指令的4种方式(ECMA)

var appModule = angular.module('app', []);appModule.directive('hello', function(){    return {        /**         * E 元素         * C class         * M 注释 directive:hello         * A 属性 默认         */        restrict: 'ECMA',        template: '
hello world.
', replace: true };});

2.指令的多种调用方式

3.service 与 controller、directive交互

  • 书名:{
    {i.title}},作者:{
    {i.author}}
var appModule = angular.module('app', []);    // service 单例,共享数据    appModule.service('Book', ['$rootScope', function($root){        var service = {            books: [                {                    "title": "书名1",                    "author": "作者1"                },                {                    "title": "书名2",                    "author": "作者2"                }            ],            addBook: function(book){                service.books.push(book);                // 给root下所有的books.update派发事件                $root.$broadcast('books.update');            }        };        return service;    }]);    // 在控制器里使用Book服务    appModule.controller('books.list', ['$scope', 'Book', function(scope, Book){        scope.books = Book.books;        scope.$on('books.update', function(){            scope.$apply(function(){                scope.books = Book.books;            });        });    }]);    // 在指令里使用Book服务    appModule.directive('addBookButton', ['Book', function(Book){        return {            restrict: 'A',            link: function(scope, el){                var n = 0;                el.bind('click', function(){                    Book.addBook({                        "title": "新书"+(++n),                        "author": "新作者"+n                    });                });            }        };    }]);

4.controller 与 controller交互

{

{text}}

{

{text}}

{

{text}}

{

{text}}

{

{text}}

{

{text}}

add
get {
{name}}
var appModule = angular.module('app', []);    // 控制器与控制器交互 -> 控制器嵌套    appModule.controller('Ctrl1Parent', ['$scope', function(scope){        scope.text = 'hello';        scope.changeText = function(){            scope.text = 'parent';        };    }]);    appModule.controller('Ctrl1Child', ['$scope', function(scope){        scope.changeText = function(){            scope.text = 'child';        };    }]);    /**     * $on          绑定事件     * $emit        向上传递事件(冒泡)     * $boardcast   向下传递事件(捕获)     */    // 控制器与控制器交互 -> 事件传播(控制器嵌套,向上传播)    appModule.controller('Ctrl2Parent', ['$scope', function(scope){        scope.text = 'parent';        scope.$on('changeText', function(ev, text){            scope.text = text;        });    }]);    appModule.controller('Ctrl2Child', ['$scope', function(scope){        scope.changeText = function(){            scope.$emit('changeText', 'child');        };    }]);    // 控制器与控制器交互 -> 事件传播(控制器嵌套,向下传播)    appModule.controller('Ctrl3Parent', ['$scope', function(scope){        scope.text = 'parent';        scope.changeText = function(){            scope.$broadcast('changeText', 'child');        };    }]);    appModule.controller('Ctrl3Child', ['$scope', function(scope){        scope.$on('changeText', function(ev, text){            scope.text = text;        });    }]);    // 控制器与控制器交互 -> 事件传播(同级传播)    appModule.controller('Ctrl4Parent', ['$scope', function(scope){        // 绑定一个changeTextAll事件,它被触发时会向子作用域发布changeTextExe        scope.$on('changeTextAll', function(){            scope.$broadcast('changeTextExe');        });    }]);    appModule.controller('Ctrl4Child', ['$scope', function(scope){        scope.text = 'parent';        // 触发父控制器的changeTextAll事件,得到changeTextExe        scope.changeText = function(){            scope.$emit('changeTextAll');        };        // changeTextExe发生        scope.$on('changeTextExe', function(){            scope.text = 'changeTextExe';        });    }]);    // 以服务的方式交互    appModule.factory('instance', function(){        return {};    });    appModule.controller('Ctrl5Main', function($scope, instance){        $scope.add = function() {            instance.name = $scope.test;        };    });    appModule.controller('Ctrl5Side', function($scope, instance){        $scope.get = function() {            $scope.name = instance.name;        };    });

 

转载于:https://www.cnblogs.com/jununx/p/4472898.html

你可能感兴趣的文章
Centos 6.5下NIS服务安装配置
查看>>
我的友情链接
查看>>
MediaPlayer的错误修复
查看>>
网络安全之***手法计中计
查看>>
Struts2拦截器的使用 (详解)
查看>>
我的友情链接
查看>>
OEL7.2下Oracle11.2.0.4RAC部署
查看>>
nagios安装与配置
查看>>
RedHat 设置IP、网关、DNS
查看>>
MYSQL 主从复制读写分离实现
查看>>
linux更改语言
查看>>
centos7 修改mac地址
查看>>
<script>标签的加载解析执行
查看>>
恢复rm删除的文件(ext3
查看>>
我的友情链接
查看>>
账户注销完自动登录账户,并且不需要再点击屏幕的账户头像
查看>>
【Interface&navigation】按钮(29)
查看>>
Extjs4.x (MVC)Controller中refs以及Ext.ComponentQuery解析
查看>>
linux面试题。
查看>>
持续集成之 Jenkins+Gitlab 打包发布程序到 Tomcat(二)
查看>>