zoukankan      html  css  js  c++  java
  • [AngularJS] Build Your Own ng-controller Directive

    /**
     * Created by Answer1215 on 12/21/2014.
     */
    angular.module('app', [])
        .controller('FirstCtrl' , function(){
            var vm = this;
            vm.message = "I am the first controller";
        })
    
    .controller('SecondCtrl', function() {
            var vm = this;
            vm.message = "I am the second controller";
        })
    
    
    .directive('customerController', function() {
            return{
    
                scope: true, //create a new scope
                controller: '@', //assing the directive name to this controller
                priority: 500,
                restrict: 'A'
            }
        })
    <!DOCTYPE html>
    <html ng-app="app">
    <head lang="en">
        <meta charset="UTF-8">
        <title></title>
        <link rel="stylesheet" href="bower_components/bootstrap/dist/css/bootstrap.min.css"/>
    </head>
    <body>
    
        <div customer-controller="FirstCtrl as first" class="well">{{first.message}}</div>
        <div customer-controller="SecondCtrl as second" class="well">{{second.message}}</div>
    
    <script src="bower_components/angular/angular.min.js"></script>
    <script src="app.js"></script>
    </body>
    </html>

    In angular.js src:

    var ngControllerDirective = [function() {
      return {
        restrict: 'A',
        scope: true,
        controller: '@',
        priority: 500
      };
    }];
      this.directive = function registerDirective(name, directiveFactory) {
        assertNotHasOwnProperty(name, 'directive');
        if (isString(name)) {
          assertArg(directiveFactory, 'directiveFactory');
          if (!hasDirectives.hasOwnProperty(name)) {
            hasDirectives[name] = [];
            $provide.factory(name + Suffix, ['$injector', '$exceptionHandler',
              function($injector, $exceptionHandler) {
                var directives = [];
                forEach(hasDirectives[name], function(directiveFactory, index) {
                  try {
                    var directive = $injector.invoke(directiveFactory);
                    if (isFunction(directive)) {
                      directive = { compile: valueFn(directive) };
                    } else if (!directive.compile && directive.link) {
                      directive.compile = valueFn(directive.link);
                    }
                    directive.priority = directive.priority || 0;
                    directive.index = index;
                    directive.name = directive.name || name;
                    directive.require = directive.require || (directive.controller && directive.name);
                    directive.restrict = directive.restrict || 'EA';
                    if (isObject(directive.scope)) {
                      directive.$$isolateBindings = parseIsolateBindings(directive.scope, directive.name);
                    }
                    directives.push(directive);
                  } catch (e) {
                    $exceptionHandler(e);
                  }
                });
                return directives;
              }]);
          }
          hasDirectives[name].push(directiveFactory);
        } else {
          forEach(name, reverseParams(registerDirective));
        }
        return this;
      };
  • 相关阅读:
    AcWing 157. 树形地铁系统 (hash判断树同构)打卡
    AcWing 156. 矩阵 (哈希二维转一维查询)打卡
    AcWing 144. 最长异或值路径 01字典树打卡
    AcWing 143. 最大异或对 01字典树打卡
    AcWing 142. 前缀统计 字典树打卡
    AcWing 139. 回文子串的最大长度 hash打卡
    AcWing 138. 兔子与兔子 hash打卡
    常用C库函数功能及用法
    编程实现C库函数
    C语言面试题5
  • 原文地址:https://www.cnblogs.com/Answer1215/p/4177253.html
Copyright © 2011-2022 走看看