zoukankan      html  css  js  c++  java
  • angularjs DI简单模拟

    简单模拟了一下angularjs的DI.

    注入器,简单思路: 1 Injector容器供用户注入

                           2 监听onload事件,找到controller,然后执行对应方法

    var Injector =  (function(){
        
        window.onload = compile;
        function compile(){
            $("[controller]").each(function(ctrl){
                var methodName = $(this).attr("controller");
                var method = window[methodName];
                var methodStr = method.toString();
                var injectionstr = methodStr.substring(methodStr.indexOf("(")+1,methodStr.indexOf(")")).split(",");
                var injectionArr = [];
                for(var i=0;i<injectionstr.length;i++){
                    injectionArr.push(Injector.get(injectionstr[i]));
                }
                method.apply(this,injectionArr);
            });
    
        }
        
        return {
            factory :function(name,instance){
                this[name] = instance();
            },
            get :function(name){
                return this[name];
            }
        }
    }())

    测试:

    <html>
    <head>
    <script src="jquery.js"></script>
    <script src="injector.js"></script>
    <script>
    Injector.factory("$timeService",function(){
        return {
            printTime : function(){
                console.log(new Date());
            }
        }
    });
    
    function ctrl($timeService){
        $timeService.printTime();
    }
    </script>
    </head>
    <body>
    <div controller="ctrl">
    </div>
    
    </body>
    </html>

    结果:Mon Sep 09 2013 19:28:16 GMT+0800 (澳大利亚西部标准时间)

  • 相关阅读:
    SQL SELECT DISTINCT 语句
    SQL SELECT 语句
    SQL 语法
    Linux 命令大全
    MySQL 安装
    Nginx 安装配置
    linux yum 命令
    Linux 磁盘管理
    Linux 文件与目录管理
    Linux 用户和用户组管理
  • 原文地址:https://www.cnblogs.com/79home/p/3310541.html
Copyright © 2011-2022 走看看