$ compile正在影响所有指令元素

时间:2015-12-17 23:37:12

标签: angularjs

我将元素添加到DOM中,并从父控制器中为它们提供位置表达式。添加每个新元素后,将在DOM上的所有现有元素上更新position元素。我只希望它更新新指令元素的位置。

   .directive("addbuttons",
     function($compile, PositionService, $timeout){
       return {
         restrict: 'A',
         replace: false,
         scope: {
          test: "@"
          },
          link: function ($scope, $element, attrs) {

      $timeout(function () {

        var posX = 0, posY = 0;
        ionic.onGesture('tap', function (e) {
          e.gesture.srcEvent.preventDefault();
          e.gesture.preventDefault();
          switch (e.type) {
            case 'tap':
              posX = event.gesture.touches[0].pageX;
              posY = event.gesture.touches[0].pageY;
              //$scope.test = posX;
              //console.log(posX);
              console.log(posY);
              break;
          }
        }, $element[0]);
      });
      $element.bind("click", function () {
        angular.element(document.getElementById('tagContainer')).prepend($compile("<div class='square' id='square1' style='left: {{test}}px' data-ion-pinch></div>")($scope));
      });
    }
  }
});

1 个答案:

答案 0 :(得分:0)

你将重新审视AngularJS模式。只需使用默认指令,例如ng-clickng-class。记住,总是尝试将DOM操作留给Angular,你应该“只”管理模型(只要你可以)。