AngularJS clone directive 指令复制

页面导航:首页 > 网络编程 > JavaScript > AngularJS clone directive 指令复制

AngularJS clone directive 指令复制

来源: 作者: 时间:2016-02-04 09:15 【

需求背景: directive模块化某表单信息,但表单信息可添加多条,此时就涉及到clone directive 解决方案: 可以通过使用angularjs中$compile来进行clone directive,clone

需求背景:

directive模块化某表单信息,但表单信息可添加多条,此时就涉及到clone directive.

解决方案:

可以通过使用angularjs中$compile来进行clone directive,clone direcitve中常涉及到数据的绑定。

具体方法:

    tw.factory('DirectiveUtil', [function() {
      var DirectiveUtil = {};
      
      DirectiveUtil.DirectiveBuilder = function(directiveName) {
      
        directive = directiveName;
        directiveBuffer = '<' + directiveName + ' ';

        this.setDirectiveName = function(directiveName) {
          directive = directiveName;
          directiveBuffer = '<' + directiveName + ' ';
        }

        this.getDirectiveName = function() {
          return directive;
        }
        // name: directive中scope的name, value: clone directive操作时,数据绑定的名称
        this.appendAttr = function(name, value) {
          directiveBuffer += name + '=\'' + value + '\' ';
          return this;
        }

        this.build = function(compile, scope) {
          return compile(directiveBuffer + ' />')(scope);
        }
      };
      
      return DirectiveUtil;
    }]);

使用方式:

  var dirctBuilder = new DirectiveUtil.DirectiveBuilder('tw-contact-form');
  dirctBuilder.appendAttr('is-new', 'isNew')     // $scope.isNew, $scope.showAddBtn, $scope.initData
      .appendAttr('show-add-btn', 'showAddBtn')
      .appendAttr('init-data', 'initData');
  
  var li = $('
  • ').attr('id', 'ContactList' + len); li.append(dirctBuilder.build($compile, $scope));

    注意:引入DirectiveUtil,调用build时传入$compile和$scope。
    Tags:

    文章评论

    最 近 更 新
    热 点 排 行
    Js与CSS工具
    代码转换工具
    
    <