2016-05-26 18 views
1

ページ内の任意の場所をクリックしてclose()関数を呼び出そうとしましたが、機能しませんでした。私は次のように書いています:ページ上の任意の場所をクリックすると、AngularJS指令の関数を呼び出す方法は?

var liveSearch = function() { 
return { 
    restrict: "A", 
    scope: { 
     myData: '=', 
     ngModel: '=' 
    }, 
    templateUrl: "/js/app/common/template/livesearch.html", 
    link: function ($scope, element, attrs) { 

     var close = function() { 
      $scope.status = "close"; 
     }; 

     $scope.open = function() { 
      $scope.status = "open"; 
     }; 

     $(document).on('click',function(){ 
      close(); 
     }); 
    } 
}; 
app.directive("liveSearch", liveSearch); 

この問題を解決するにはどうすればいいですか?

編集

<div live-search my-data="data" ng-model="typeId" ></div> 
+0

あなたはこのディレクティブを使用しているか、共有することはできますか? – seekers01

+0

編集されたセクション – vaqifrv

答えて

0

あなたはそのDOMオブジェクト以外の場所をクリックを検出するために、このclickElsewhereディレクティブを使用してみてくださいlink

link:function($scope, element, attrs)){ 
    $scope.close = function(){ 
    // Rest of the code 
    }  
    $('body').on('click',function(event){ 
     $scope.close(); 
     }) 
    } 
+0

を見てくださいそれはロードページの後に一度だけ働きます – vaqifrv

1

内部clickハンドラを記述することができます。

あなたのテンプレートにそうようにそれを使用することができます
directive('clickElsewhere', function($parse, $rootScope) { 
     return { 
      restrict: 'A', 
      compile: function($element, attr) { 
       var fn; 
       fn = $parse(attr['clickElsewhere']); 
       return function(scope, element) { 
        var offEvent; 
        offEvent = $rootScope.$on('click', function(event, target) { 
         if (element.find($(target)).length || element.is($(target))) { 
          return; 
         } 
         return scope.$apply(function() { 
          return fn(scope); 
         }); 
        }); 
        return scope.$on('$destroy', offEvent); 
       }; 
      } 
     }; 
    }); 

<div live-search my-data="data" ng-model="typeId" click-else-where="close()"></div> 
+0

それはclickboxイベントではなく、テキストボックスkeydownイベントでのみ機能します。このディレクティブは、ライブ検索用に作成されたもので、textbox close()関数呼び出しで何かを検索するためにタイプしようとしたときに作成されます。 – vaqifrv

+0

は、あなたの質問とそのコードの '' '$ rootScope。$ on( 'click'、...' '' – shershen

関連する問題