AngularJS clone directive 指令複製

來源:互聯網
上載者:User

AngularJS clone directive 指令複製
需求背景: 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。

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.