2013-03-25 30 views
20

Tôi nghĩ rằng nó nên được dễ dàng để sử dụng các thuộc tính góc nổi tiếng trên một chỉ thị ra khỏi hộp.thuộc tính ng-click trên angularjs chỉ thị

Ví dụ, nếu tên của chỉ thị của tôi là myDirective Tôi muốn sử dụng nó theo cách này:

<div ng-controller="myController"> 
    <my-directive ng-click="doSomething()"><my-directive> 
</div> 

thay vì cần phải xác định một thuộc tính tùy chỉnh nhấp chuột (onClick) như trong ví dụ dưới đây

<div ng-controller="myController"> 
    <my-directive on-click="doSomething()"><my-directive> 
</div> 

Có vẻ như ng-click có thể hoạt động, nhưng sau đó bạn cần chỉ định bộ điều khiển ng trên thẻ chỉ thị mà tôi không muốn. Tôi muốn xác định bộ điều khiển trên một div xung quanh

Có thể sử dụng ng-click trên một chỉ thị cùng với bộ điều khiển được xác định trên phần tử html gốc không?

Trả lời

33

Đây là mã được cập nhật. Có lẽ đây là những gì bạn đang tìm kiếm.

Html:

<div data-ng-app="myApp"> 
    <div data-ng-controller="MyController"> 
     <my-directive data-ng-click="myFirstFunction('Hallo')"></my-directive> 
     <my-directive data-ng-click="mySecondFunction('Hi')"></my-directive> 
    </div> 
</div> 

góc:

var app = angular.module('myApp', []); 

app.directive('myDirective', function(){ 
    return { 
     restrict: 'EA', 
     replace: true, 
     scope: { 
      eventHandler: '&ngClick' 
     }, 
     template: '<div id="holder"><button data-ng-click="eventHandler()">Call own function</button></div>' 
    }; 
}); 

app.controller('MyController', ['$scope', function($scope) { 
    $scope.myFirstFunction = function(msg) { 
     alert(msg + '!!! first function call!'); 
    }; 
    $scope.mySecondFunction = function(msg) { 
     alert(msg + '!!! second function call!'); 
    }; 
}]); 

Sửa

Kiểm tra giải pháp mà tôi đã thực hiện trong jsFiddler là những gì bạn đang tìm kiếm?

http://jsfiddle.net/migontech/3QRDt/1/

+0

Nó dường như không làm việc ... - Tôi vẫn cần cung cấp những ng-điều khiển trên thị tôi –

+0

Vì vậy, bạn muốn có một chức năng 'doSomthing()' không phải là trong bộ điều khiển nhưng trong chỉ thị của bạn? – migontech

+0

Tôi muốn một cái gì đó như thế này: '

' Tại thời điểm này tôi chỉ có thể đạt được điều này bằng cách gắn một thuộc tính nhấp chuột cụ thể: 'app.directive ('myDirective', function() { trở lại { phạm vi: { onClick: '&' } }; }); ' ' ' –

Các vấn đề liên quan